gpt4 book ai didi

python - 使用 Pyramid、nginx、X-Accel-Redirect Header 提供 pdf 作为下载

转载 作者:太空狗 更新时间:2023-10-30 02:22:00 33 4
gpt4 key购买 nike

我希望用户能够点击这样的链接:

<a href="/download?file=123">download</a>

让 Pyramid 1.2.7 应用像这样处理 View

@view_config(route_name='download')
def download(request):
file_id = request.GET['file']
filename = get_filename(file_id)
headers = request.response.headers
headers['Content-Description'] = 'File Transfer'
headers['Content-Type'] = 'application/force-download'
headers['Accept-Ranges'] = 'bytes'
headers['X-Accel-Redirect'] = ("/path/" + filename + ".pdf")
return request.response

我的 nginx 配置是这样的

location /path/ {
internal;
root /opt/tmp;
}

这一切都有效,但浏览器没有显示 pdf 已下载,而是显示一堆 PDF 垃圾。

如何设置我的 Pyramid View 以使浏览器做正确的事情?

最佳答案

如果您想指示网络浏览器应该下载资源而不是显示资源,请尝试使用 Content-Disposition header as described in RFC 6266 .例如,以下响应 header 将告诉浏览器下载文件:

Content-Disposition: attachment

您还可以通过此 header 为下载的文件指定一个文件名(如果它与 URL 中的最后一个路径组件不同):

Content-Disposition: attachment; filename=foo.pdf

查看 Nginx documentation ,此响应 header 应与您正在使用的 X-Accel-Redirect 功能一起正常工作。

关于python - 使用 Pyramid、nginx、X-Accel-Redirect Header 提供 pdf 作为下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12967734/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com