我希望用户能够点击这样的链接:
<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垃圾。
我如何设置我的金字塔视图,让浏览器做正确的事情?
发布于 2012-10-19 13:26:37
如果要指示web浏览器应下载资源而不是显示该资源,请尝试使用Content-Disposition标头as described in RFC 6266。例如,下面的响应头部将告诉浏览器下载该文件:
Content-Disposition: attachment您还可以通过此头为下载的文件指定文件名(如果它与URL中的最后一个路径部分不同):
Content-Disposition: attachment; filename=foo.pdf查看Nginx documentation,这个响应头应该与您正在使用的X-Accel-Redirect特性一起正确工作。
https://stackoverflow.com/questions/12967734
复制相似问题