首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Pyramid,ningx,X-Accel-Redirect报头提供pdf下载

使用Pyramid,ningx,X-Accel-Redirect报头提供pdf下载
EN

Stack Overflow用户
提问于 2012-10-19 13:09:31
回答 1查看 2.3K关注 0票数 4

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

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

让一个金字塔1.2.7应用程序像这样处理视图

代码语言:javascript
复制
@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配置如下所示

代码语言:javascript
复制
location /path/ {
 internal;
 root /opt/tmp; 
}

这一切都可以,但浏览器不会显示pdf已下载,而是显示一堆PDF垃圾。

我如何设置我的金字塔视图,让浏览器做正确的事情?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-19 13:26:37

如果要指示web浏览器应下载资源而不是显示该资源,请尝试使用Content-Disposition标头as described in RFC 6266。例如,下面的响应头部将告诉浏览器下载该文件:

代码语言:javascript
复制
Content-Disposition: attachment

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

代码语言:javascript
复制
Content-Disposition: attachment; filename=foo.pdf

查看Nginx documentation,这个响应头应该与您正在使用的X-Accel-Redirect特性一起正确工作。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12967734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档