header中Content-Disposition的作用与使用方法


Posted in PHP onJune 13, 2012

Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。Content-disposition其实可以控制用户请求所得的内容存为一个文件的时候提供一个默认的文件名,文件直接在浏览器上显示或者在访问时弹出文件下载对话框。

格式说明:
content-disposition = "Content-Disposition" ":" disposition-type *( ";" disposition-parm )  

字段说明:
Content-Disposition为属性名
disposition-type是以什么方式下载,如attachment为以附件方式下载
disposition-parm为默认保存时的文件名
服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器中显示,如果需要提示用户保存,就要利用Content-Disposition进行一下处理,关键在于一定要加上attachment:

Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt");

备注:这样浏览器会提示保存还是打开,即使选择打开,也会使用相关联的程序比如记事本打开,而不是IE直接打开了。
Content-Disposition就是当用户想把请求所得的内容存为一个文件的时候提供一个默认的文件名。具体的定义如下:
content-disposition = "Content-Disposition" ":" 
disposition-type *( ";" disposition-parm ) 
disposition-type = "attachment" | disp-extension-token 
disposition-parm = filename-parm | disp-extension-parm 
filename-parm = "filename" "=" quoted-string 
disp-extension-token = token 
disp-extension-parm = token "=" ( token | quoted-string )

那么由上可知具体的例子:

Content-Disposition: attachment; filename="filename.xls"
当然filename参数可以包含路径信息,但User-Agnet会忽略掉这些信息,只会把路径信息的最后一部分做为文件名。当你在响应类型为application/octet- stream情况下使用了这个头信息的话,那就意味着你不想直接显示内容,而是弹出一个"文件下载"的对话框,接下来就是由你来决定"打开"还是"保存" 了。

注意事项:

1.当代码里面使用Content-Disposition来确保浏览器弹出下载对话框的时候。 response.addHeader("Content-Disposition","attachment");一定要确保没有做过关于禁止浏览器缓存的操作。如下:

response.setHeader("Pragma", "No-cache"); 
response.setHeader("Cache-Control", "No-cache"); 
response.setDateHeader("Expires", 0);

不然会发现下载功能在opera和firefox里面好好的没问题,在IE下面就是不行
PHP 相关文章推荐
linux下删除7天前日志的代码(php+shell)
Jan 02 PHP
php中关于普通表单多文件上传的处理方法
Mar 25 PHP
PHP操作MongoDB时的整数问题及对策说明
May 02 PHP
一个典型的PHP分页实例代码分享
Jul 28 PHP
php中json_decode()和json_encode()的使用方法
Jun 04 PHP
PHP 安全检测代码片段(分享)
Jul 05 PHP
php创建sprite
Feb 11 PHP
CodeIgniter安全相关设置汇总
Jul 03 PHP
YII中assets的使用示例
Jul 31 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
php生成验证码函数
Oct 20 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
Apr 21 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
Jun 13 #PHP
Php中文件下载功能实现超详细流程分析
Jun 13 #PHP
php异常处理技术,顶级异常处理器
Jun 13 #PHP
PHP的异常处理类Exception的使用及说明
Jun 13 #PHP
PHP抽象类 介绍
Jun 13 #PHP
MySQL 日期时间函数常用总结
Jun 12 #PHP
PHP简洁函数(PHP简单明了函数语法)
Jun 10 #PHP
You might like
对javascript和select部件的结合运用
2006/10/09 PHP
浅析php变量作用域的一些问题
2013/08/08 PHP
php命名空间学习详解
2014/02/27 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
2021/03/09 Javascript
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
JS重载实现方法分析
2016/12/16 Javascript
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
微信小程序实现签字功能
2019/12/23 Javascript
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
讲解python参数和作用域的使用
2013/11/01 Python
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
Python正则简单实例分析
2017/03/21 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
2019/09/10 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
python实现指定ip端口扫描方式
2019/12/17 Python
python多进程使用函数封装实例
2020/05/02 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
行政管理毕业生自荐信
2014/02/24 职场文书
合作意向协议书范本
2014/03/31 职场文书
暑期家教宣传单
2015/07/14 职场文书
德能勤绩工作总结
2015/08/11 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL