使用Django静态文件的自定义HTTP标头
发布时间:2020-05-27 15:55:40 所属栏目:Python 来源:互联网
导读:我正在使用Django编写一个图像库,我想添加一个按钮来获得高分辨率图像(低分辨率显示在详细信息页面中).如果我把一个 a链接,浏览器将打开图像,而不是下载它.添加HTTP标头,如: Content-Disposition: attachment; filename=beach008.jpg 工作,但由于它是一个静
|
我正在使用Django编写一个图像库,我想添加一个按钮来获得高分辨率图像(低分辨率显示在详细信息页面中).如果我把一个< a>链接,浏览器将打开图像,而不是下载它.添加HTTP标头,如: Content-Disposition: attachment; filename="beach008.jpg" 工作,但由于它是一个静态文件,我不想处理与Django的请求.目前,我正在使用NGINX来提供静态文件,动态页面通过FastCGI重定向到Django进程.我正在考虑使用NGINX add-header命令,但是可以设置filename =“xx”部分吗?或者也许有一些方法来处理Django中的请求,但是NGINX会提供内容? 解决方法如果您的django应用程序由nginx代理,您可以使用 x-accell-redirect.您需要在响应中传递一个特殊的头文件,nginx将会插入该文件并开始提供该文件,您也可以在同一响应中传递Content-Disposition以强制下载.如果您想要控制哪些用户访问这些文件,该解决方案是很好的. 您也可以使用如下配置: #files which need to be forced downloads
location /static/high_res/ {
root /project_root;
#don't ever send $request_filename in your response,it will expose your dir struct,use a quick regex hack to find just the filename
if ($request_filename ~* ^.*?/([^/]*?)$)
{
set $filename $1;
}
if ($filename ~* ^.*?.(jpg)|(png)|(gif)$){
add_header Content-Disposition "attachment; filename=$filename";
}
}
location /static {
root /project_root;
}
这将强制在一些high_res文件夹(MEDIAROOT / high_rest)中的所有图像上下载.而对于其他静态文件,它的行为就像正常.请注意,这是一个适用于我的修改后的快速入侵.它可能有安全隐患,所以请谨慎使用它. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
