Flask重定向到外部文件,并提供文件名而不是原始文件名。

问题描述 投票:0回答:1

我使用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
python redirect flask
1个回答
0
投票

无法为重定向响应提供内容处置头。

主要的浏览器已经不支持这个功能了。要求提供文件的服务器在自己的响应中包含内容定位,并告诉浏览器使用该内容定位而不是哈希文件名。

© www.soinside.com 2019 - 2024. All rights reserved.