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

Flask.helpers中文件上传和下载的实现方式

发布时间:2024-01-14 06:33:55

Flask是一个轻量级的Web框架,提供了一些有用的工具和插件来帮助开发者处理文件上传和下载的任务。在Flask中,可以使用Flask helpers模块来实现文件上传和下载的功能。下面是文件上传和下载的实现方式以及使用例子。

文件上传:

1. 在HTML模板中,添加一个包含enctype属性的form表单,以便能够上传文件:

<form action="/upload" method="post" enctype="multipart/form-data">
  <input type="file" name="file">
  <input type="submit" value="Upload">
</form>

2. 在Flask的视图函数中,处理文件上传的请求:

from flask import Flask, request

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files['file']
    if file:
        file.save('uploads/' + file.filename)
        return 'File uploaded successfully'
    else:
        return 'No file selected'

上面的代码中,我们使用了request.files来获取上传的文件对象。然后,使用file.save方法将文件保存到指定的路径下。

文件下载:

1. 在Flask的视图函数中,设置文件下载的路由,并提供一个可以生成下载链接的页面:

from flask import Flask, send_from_directory

app = Flask(__name__)

@app.route('/download/')
def show_download_page():
    return '''
    <h1>Download Page</h1>
    <a href="/download-file">Download File</a>
    '''

@app.route('/download-file')
def download_file():
    filename = 'file.txt'
    directory = 'uploads' # 文件所在的目录
    return send_from_directory(directory, filename, as_attachment=True)

上面的代码中,我们使用了send_from_directory函数来发送文件给客户端。其中,as_attachment参数设置为True,将使浏览器将文件视为附件下载。

以上就是使用Flask.helpers模块实现文件上传和下载的方式以及使用例子。通过这些简单的代码,你可以方便地实现文件上传和下载的功能。