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 相关文章推荐
apache+mysql+php+ssl服务器之完全安装攻略
Sep 05 PHP
php xml文件操作代码(一)
Mar 20 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 PHP
PHP中array_slice函数用法实例详解
Nov 25 PHP
php生成圆角图片的方法
Apr 07 PHP
PHP的邮件群发系统phplist配置方法详细总结
Mar 30 PHP
PHP数组函数知识汇总
May 12 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
phpinfo的知识点总结
Oct 10 PHP
Yii框架where查询用法实例分析
Oct 22 PHP
PHP中的异常处理机制深入讲解
Nov 10 PHP
PHP中SESSION过期设置
Mar 09 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
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
php生成二维码
2015/08/10 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
ES6数组的扩展详解
2017/04/25 Javascript
jQuery Dom元素操作技巧
2018/02/04 jQuery
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
Python压缩和解压缩zip文件
2015/02/14 Python
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
有趣的python小程序分享
2017/12/05 Python
python多线程实现TCP服务端
2019/09/03 Python
Python实现微信表情包炸群功能
2021/01/28 Python
纯css3实现图片翻牌特效
2015/03/10 HTML / CSS
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
中国最大的团购网站:聚划算
2016/09/21 全球购物
会计实习期自我鉴定
2013/10/06 职场文书
数据员岗位职责
2013/11/19 职场文书
售后服务经理岗位职责
2014/02/25 职场文书
一年级学生期末评语
2014/04/21 职场文书
小学教师培训方案
2014/06/09 职场文书
公民授权委托书范本
2014/09/17 职场文书
干部考察材料范文
2014/12/24 职场文书
董事长开业致辞
2015/07/29 职场文书
pandas中对文本类型数据的处理小结
2021/11/01 Python
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫