欢迎访问宙启技术站
智能推送

利用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应用中实现文件的上传和下载功能。