Flask重定向到外部文件,并提供文件名而不是原始文件名。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask重定向到外部文件,并提供文件名而不是原始文件名。相关的知识,希望对你有一定的参考价值。
我使用Flask来服务应用程序。直到最近,Flask还在使用响应流为下载文件服务。
由于工作错误的数量增加,我现在需要将请求重定向到外部位置,在那里文件被存储在 7249ed01-9c3d-45fe-895c-5a27db785d2d.tar.gz
文件名格式。重定向本身是有效的,但在浏览器的保存对话框中显示的文件名仍然是 7249ed01-9c3d-45fe-895c-5a27db785d2d
.
代码示例如下。
@app.route("/download/<filename>")
def view_file_download(filename):
# filename can be ignored, used to retrieve info from db
url = "https://example.com/7249ed01-9c3d-45fe-895c-5a27db785d2d.tar.gz"
filename_orig = "example.tar.gz"
filesize = 123456
res = flask.redirect(url, code=303)
res.headers.set("Location", url)
res.headers.set("Content-Disposition", "attachment", filename=filename_orig)
res.headers.set("Content-Length", filesize)
return res
答案
无法为重定向响应提供内容处置头。
主要的浏览器已经不支持这个功能了。要求提供文件的服务器在自己的响应中包含内容定位,并告诉浏览器使用该内容定位而不是哈希文件名。
以上是关于Flask重定向到外部文件,并提供文件名而不是原始文件名。的主要内容,如果未能解决你的问题,请参考以下文章