Python3 Flask 文件上传教程

作为一名经验丰富的开发者,我很高兴能够指导你如何使用Python3和Flask框架实现文件上传功能。这个过程可以分为以下几个步骤:

步骤 描述
1 安装Flask
2 创建Flask应用
3 创建HTML表单
4 处理文件上传
5 保存文件到服务器

下面,我将详细解释每一步的具体操作。

1. 安装Flask

首先,你需要安装Flask。打开终端或命令提示符,输入以下命令:

pip install flask

2. 创建Flask应用

接下来,创建一个名为app.py的Python文件,并写入以下代码:

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('upload.html')

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

这段代码创建了一个基本的Flask应用,并定义了一个路由/,当访问这个路由时,会渲染upload.html页面。

3. 创建HTML表单

在与app.py同级的目录下创建一个名为templates的文件夹,并在其中创建一个名为upload.html的HTML文件。写入以下代码:

<!DOCTYPE html>
<html>
<head>
    <title>文件上传</title>
</head>
<body>
    上传文件
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file" required>
        <input type="submit" value="上传">
    </form>
</body>
</html>

这段代码定义了一个简单的HTML表单,允许用户选择文件并提交。

4. 处理文件上传

回到app.py文件,添加以下代码来处理文件上传:

from werkzeug.utils import secure_filename
import os

@app.route('/upload', methods=['POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        if file:
            filename = secure_filename(file.filename)
            file.save(os.path.join('/path/to/save', filename))
            return '文件上传成功'
    return '文件上传失败'

这段代码定义了一个名为/upload的路由,用于处理POST请求。它接收上传的文件,使用secure_filename确保文件名安全,并将其保存到指定路径。

5. 保存文件到服务器

确保你已经创建了用于保存文件的文件夹,并在代码中指定正确的路径。

关系图

以下是Flask应用与HTML表单之间的关系图:

erDiagram
    APP ||--o| HTML : "渲染"
    Flask {
        int index() "渲染upload.html"
    }
    HTML {
        string action "/upload"
        string method "POST"
        string enctype "multipart/form-data"
    }

状态图

以下是文件上传的状态图:

stateDiagram-v2
    [*] --> [上传文件]
    [上传文件] --> [文件上传成功]
    [上传文件] --> [文件上传失败]

结尾

现在,你已经了解了如何使用Python3和Flask实现文件上传功能。希望这篇文章能够帮助你快速上手。如果你在实现过程中遇到任何问题,欢迎随时向我咨询。祝你编程愉快!