Content-Disposition~强制浏览器保存文件

问题

假设你的网站有一张图片
http://file.test.com/img/login.jpg

使用浏览器访问这个url,默认情况下,浏览器会自动展现这张图片。那么问题来了,如果你目的是想让浏览器默认下载而非展现这张图,怎么办呢?

解决

http header中有一个字段,可以帮你实现这个目的。

Content-Disposition:attachment;

实践

nginx中增加配置

location ~ img {
    add_header Content-disposition "attachment";
}

即对所有图片目录的访问,响应头中增加Content-Disposition。

使用浏览器访问
http://file.test.com/img/login.jpg

chrome的表现:直接下载login.jpg。

ie9表现:提示“您是要打开还是保存来自file.test.com的login.jpg”

为文件换个名字

有时你希望用户侧使用另外的名字保存文件,这时只要增加filename字段即可。

Content-Disposition:attachment;filename=NewnName

nginx中,你可以这样写

location ~ img {
    add_header Content-disposition "attachment;filename=new.jpg";
}

此时,你再次用浏览器打开http://file.test.com/img/login.jpg时,会发现文件会以new.jpg的名字被保存。

进一步

你可以用php之类的语言,动态输出http头部的Content-disposition字段及文件内容,这样可以根据需要给文件任意命名了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值