微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flask:使用 GET 请求下载 .zip 文件

如何解决Flask:使用 GET 请求下载 .zip 文件

烧瓶 v1.1.2,Python v3.7

我正在尝试让 Flask 向我发送它根据 GET 请求生成的 .zip 文件

我有一个页面用户可以在其中单击下载按钮,该按钮发出 GET 请求并将键解析为值。基于此密钥创建 .zip 文件并将其移动到我的 /static 文件夹中。在执行的处理程序下方:

    def download(self):
        key = request.args['action']
        zip_location = os.path.join(app.static_folder,"files.zip")
        res = self.recorder.down.download(key,zip_location)
        return send_file("static/files.zip",as_attachment=True)

我尝试使用 send_filesend_from_directoryapp.send_static_file 发送文件,但它们都导致出现相同的奇怪错误

Serving Flask app "webapp.webUI" (lazy loading) 
Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production Wsgi server instead.
Debug mode: on
Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Debugging middleware caught exception in streamed response at a point where response headers were already sent.
Traceback (most recent call last):
  File "/home/pi/somepath/env/lib/python3.7/site-packages/werkzeug/wsgi.py",line 506,in __next__
    return self._next()
  File "/home/pi/somepath/env/lib/python3.7/site-packages/werkzeug/wrappers/base_response.py",line 45,in _iter_encoded
    for item in iterable:
TypeError: 'Response' object is not iterable
127.0.0.1 - - [18/Feb/2021 13:34:58] "GET /download?action=20210216+16u11s19 HTTP/1.1" 200 -

Google 帮不上什么忙,我已经搜索错误的原因好几个小时了。

解决方法

试试

from flask import Flask,request
# set the project root directory as the static folder,you can set others.
app = Flask(__name__,static_url_path='')

@app.route('/download')
def download():
    return app.send_static_file('files.zip')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。