Flask 中如何处理文件上传?

· 约 4 分钟读完 · 第 25 / 136 章

推荐答案

在 Flask 中处理文件上传可以通过 request.files 对象来实现。以下是一个简单的示例代码:

本题详细解读

1. 文件上传的基本流程

在 Flask 中,文件上传通常通过 HTML 表单的 POST 请求来完成。表单的 enctype 属性必须设置为 multipart/form-data,这样才能正确传输文件数据。

2. 使用 request.files 获取文件

Flask 提供了一个 request.files 对象,它是一个字典,包含了所有通过表单上传的文件。每个文件都是一个 FileStorage 对象,可以通过 request.files['file'] 来获取。

3. 检查文件是否存在

在处理文件上传时,首先需要检查是否有文件被上传。可以通过 if 'file' not in request.files 来判断是否有文件被上传。如果没有文件被上传,可以返回一个错误信息。

4. 检查文件名是否为空

如果用户没有选择文件,浏览器会提交一个空文件。可以通过 if file.filename == '' 来判断文件名是否为空。如果为空,可以返回一个错误信息。

5. 保存文件

一旦确认文件存在且文件名不为空,可以通过 file.save() 方法将文件保存到指定路径。通常会将文件保存到服务器的某个目录中,例如 uploads/ 目录。

6. 返回成功信息

文件保存成功后,可以返回一个成功信息,告知用户文件上传成功。

7. HTML 表单

在 HTML 表单中,<input type="file"> 用于选择文件,<input type="submit"> 用于提交表单。表单的 method 属性必须设置为 post,并且 enctype 属性必须设置为 multipart/form-data。

8. 运行 Flask 应用

最后,通过 app.run(debug=True) 启动 Flask 应用,并开启调试模式,方便开发时查看错误信息。