使用 Flask 实现文件上传和下载
在现代 web 开发中,文件上传和下载功能是一个常见的需求。Flask 是一个灵活且强大的 Python Web 框架,非常适合实现这些功能。本篇文章将引导你如何使用 Flask 实现文件的上传和下载。
流程概述
以下是实现文件上传和下载的基本步骤:
步骤 | 描述 |
---|---|
1 | 创建 Flask 项目 |
2 | 设置文件上传配置 |
3 | 创建上传文件的表单 |
4 | 编写处理上传的路由 |
5 | 编写下载文件的路由 |
6 | 运行 Flask 项目 |
步骤详解
1. 创建 Flask 项目
首先,确保你已经安装 Flask。你可以使用以下命令安装:
pip install Flask
然后,创建一个新的 Python 文件,如 app.py
,并导入 Flask:
from flask import Flask, request, send_from_directory
import os
app = Flask(__name__)
2. 设置文件上传配置
你需要设置文件上传的目录和允许的文件扩展名:
# 设置上传文件存储目录
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
# 设置允许的文件扩展名
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'}
# 检查文件扩展名是否被允许
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
3. 创建上传文件的表单
在这里,我们使用 HTML 创建一个上传表单:
@app.route('/')
def upload_form():
return '''
<html>
<body>
上传文件
<form method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit">
</form>
</body>
</html>
'''
4. 编写处理上传的路由
处理文件上传请求并将文件保存到指定的目录:
@app.route('/', methods=['POST'])
def upload_file():
if 'file' not in request.files:
return '没有文件部分'
file = request.files['file']
if file.filename == '':
return '没有选中文件'
if file and allowed_file(file.filename):
# 保存文件
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
return '文件上传成功'
5. 编写下载文件的路由
创建文件下载的路由:
@app.route('/uploads/<filename>')
def download_file(filename):
return send_from_directory(app.config['UPLOAD_FOLDER'], filename)
6. 运行 Flask 项目
最后,添加以下代码以运行 Flask 应用:
if __name__ == '__main__':
# 创建上传目录(如果不存在)
if not os.path.exists(UPLOAD_FOLDER):
os.makedirs(UPLOAD_FOLDER)
app.run(debug=True)
结束说明
至此,我们已经完成了基本的 Flask 文件上传和下载功能。你可以通过 发起请求来下载文件。
关系图
erDiagram
FLASK_APP {
string name
}
FILE {
string filename
string path
}
FLASK_APP ||--o{ FILE : handles
通过这篇文章的介绍,你应该能够理解如何使用 Flask 简单实现文件上传和下载功能。继续深入学习!使用 Flask 还可以实现更多复杂的功能,如认证、数据库操作等,期待你能在这个奇妙的编程世界中不断探索与成长。