nginx强制下载txt等文件

                                                  nginx强制下载txt等文件

当前的浏览器能够识别文件格式,如果浏览器本身能够解析就会默认打开,如果不能解析就会下载该文件。比如txt文件就直接被解析,还有其他文件也是一样。

那么使用nginx做资源服务器的时候,如何强制下载文件呢?

当前的nginx文件路径配置如下:


添加头信息Content-Disposition "attachment;"会使浏览器强制下载:

if ($request_filename ~* ^.*?\.(txt|pdf|doc|xls)$){  
      add_header Content-Disposition "attachment;";
}

当然,也可以直接加头而不进行判断的:

 add_header Content-Disposition "attachment;";

测试:txt文件可以直接下载,在IE浏览器测试也是没有问题的

不管mime类型是什么,比如人工把图片的mime类型设置为octet-stream,如果浏览器认识文件后缀的话,仍然会在浏览器中打开图片,IE浏览器够垃圾的吧?

解决方案:在响应的http头添加:Content-Disposition: attachment; filename=文件名

add_header Content-Disposition "attachment; filename=$1";

使用到了正则表达式,捕获请求的文件名。

需要注意nginx的location优先级,首先是=,然后是^~,最后才是~。

这样,IE浏览器就会忽略掉原mime类型,提示用户把文件保存到本地。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值