成为了PDF与金字塔,ningx,X-阿塞尔 - 重定向头下载(Serve up pdf as a

2019-09-24 06:55发布

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

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

有一个金字塔1.2.7应用处理这样的观点

@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垃圾。

如何设置我的金字塔,以便让浏览器做正确的事?

Answer 1:

如果你想表明一个网页浏览器应该下载的资源,而不是显示它,尝试使用Content-Disposition头在RFC 6266中描述 。 例如,下面的响应头将告诉浏览器下载文件:

Content-Disposition: attachment

您也可以通过这个头指定下载文件的文件名(如果它在URL中的最后一个路径组件不同):

Content-Disposition: attachment; filename=foo.pdf

纵观Nginx的文档 ,该响应头应与一起正常工作X-Accel-Redirect功能,您正在使用。



文章来源: Serve up pdf as a download with Pyramid, ningx, X-Accel-Redirect Header