利用FileStorage()实现文件上传和下载功能的完整教程
发布时间:2023-12-13 21:47:04
FileStorage()是Flask中的一个类,用于处理文件的上传和下载。它可以方便地将文件保存到服务器的指定路径,并提供了下载文件的功能。下面是一个完整的教程,包括上传和下载文件的使用示例。
1. 导入必要的库和模块
from flask import Flask, request, send_file from werkzeug.utils import secure_filename
2. 创建Flask应用
app = Flask(__name__)
3. 配置文件上传的路径和允许的文件类型
app.config['UPLOAD_FOLDER'] = '/path/to/upload/folder' app.config['ALLOWED_EXTENSIONS'] = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
4. 定义一个函数,用于判断文件的扩展名是否在允许的范围内
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1] in app.config['ALLOWED_EXTENSIONS']
5. 定义一个路由,用于处理文件上传请求
@app.route('/upload', methods=['POST'])
def upload_file():
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return '文件上传成功'
else:
return '不允许上传该类型的文件'
6. 定义一个路由,用于处理文件下载请求
@app.route('/download/<filename>', methods=['GET'])
def download_file(filename):
path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
if os.path.isfile(path):
return send_file(path, as_attachment=True)
else:
return '文件不存在'
7. 运行Flask应用
if __name__ == '__main__':
app.run()
上传文件的示例:
在HTML中添加一个上传文件的表单:
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
下载文件的示例:
在HTML中添加一个下载文件的链接:
<a href="/download/example.txt">下载文件</a>
这样就可以通过点击链接来下载服务器中的example.txt文件。
以上就是利用FileStorage()实现文件上传和下载功能的完整教程,包括使用示例。通过这个教程,你可以方便地在Flask应用中实现文件的上传和下载功能。
