使用 Flask 实现文件上传

Flask 是一个轻量级的 Python Web 框架,它的灵活性和简洁性使得文件上传变得简单。本文将逐步指导你如何实现使用 Flask 接收文件的功能。

流程概述

在实现文件上传功能时,我们需要遵循以下步骤:

步骤 描述
1 安装 Flask 和必要的库
2 创建 Flask 应用
3 创建 HTML 表单以便用户上传文件
4 编写文件上传的处理视图
5 运行 Flask 应用并测试文件上传功能

甘特图

接下来,用 Mermaid 语法展示项目的甘特图:

gantt
    title 文件上传项目进度
    dateFormat  YYYY-MM-DD
    section 准备阶段
    安装 Flask                :a1, 2023-10-01, 1d
    创建 Flask 应用          :a2, 2023-10-02, 1d
    section 开发阶段
    创建 HTML 表单          :b1, 2023-10-03, 1d
    编写处理视图            :b2, 2023-10-04, 1d
    测试功能                :b3, 2023-10-05, 1d

详细步骤

1. 安装 Flask 和必要的库

首先,确保你的 Python 环境已经安装了 Flask。如果没有,请使用以下命令进行安装:

pip install Flask

2. 创建 Flask 应用

在你的项目文件夹中,创建一个 app.py 文件,并写入以下代码:

from flask import Flask, request, render_template

app = Flask(__name__)

# 设置上传文件的目录
app.config['UPLOAD_FOLDER'] = 'uploads'

@app.route('/')
def upload_form():
    # 渲染上传文件的 HTML 表单
    return render_template('upload.html')

if __name__ == '__main__':
    app.run(debug=True)

代码解释

  • from flask import Flask, request, render_template: 导入 Flask 的主要功能模块。
  • app = Flask(__name__): 初始化 Flask 应用。
  • app.config['UPLOAD_FOLDER'] = 'uploads': 指定文件上传的文件夹位置。
  • @app.route('/'): 定义主页路由,返回上传表单。

3. 创建 HTML 表单以便用户上传文件

在项目根目录下创建一个名为 templates 的文件夹,并在其中创建一个 upload.html 文件,输入以下内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>文件上传</title>
</head>
<body>
    上传文件
    <form method="post" action="/upload" enctype="multipart/form-data">
        <input type="file" name="file" required>
        <button type="submit">上传</button>
    </form>
</body>
</html>

代码解释

  • 这个 HTML 表单允许用户选择文件上传。
  • enctype="multipart/form-data": 重要属性,用于支持文件上传。

4. 编写文件上传的处理视图

app.py 中添加文件上传的处理逻辑:

import os

@app.route('/upload', methods=['POST'])
def upload_file():
    if 'file' not in request.files:
        return '没有文件被上传!'
    
    file = request.files['file']
    
    if file.filename == '':
        return '没有选择文件!'
    
    # 保存文件到指定文件夹
    file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
    
    return '文件上传成功!'

代码解释

  • @app.route('/upload', methods=['POST']): 定义处理文件上传的路由。
  • request.files['file']: 获取上传的文件。
  • file.save(...): 保存文件到指定目录。

5. 运行 Flask 应用并测试功能

运行你的 Flask 应用:

python app.py

在浏览器中访问 `

关系图

以下是简单的关系图,展示 upload_formupload_file 之间的关系:

erDiagram
    USER ||--o{ FORM : uploads
    FORM ||--o{ FILE : contains

结尾

通过上面的步骤,你已经成功实现了一个简单的文件上传功能。Flask 使得处理文件上传变得非常简单,只需几行代码和基本的配置。

在未来,你可以继续扩展这个项目,例如添加文件类型验证、安全措施以及上传进度显示等功能。不断实践,你会发现自己对 Flask 的理解越来越深入。希望本文对你有所帮助,祝你编程愉快!