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 相关文章推荐
PHP导出MySQL数据到Excel文件(fputcsv)
Jul 03 PHP
php图片加水印原理(超简单的实例代码)
Jan 18 PHP
深入PHP FTP类的详解
Jun 13 PHP
关于JSON以及JSON在PHP中的应用技巧
Nov 27 PHP
非常实用的php验证码类
May 15 PHP
PHP is_array() 检测变量是否是数组的实现方法
Jun 13 PHP
ThinkPHP实现更新数据实例详解(demo)
Jun 29 PHP
php实现带读写分离功能的MySQL类完整实例
Jul 28 PHP
PHP实现的网站目录扫描索引工具
Sep 08 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 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中strlen和mb_strlen函数的区别
2014/03/07 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
window.location和document.location的区别分析
2008/12/23 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
JS JQUERY实现滚动条自动滚到底的方法
2015/01/09 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
微信小程序 Template详解及简单实例
2017/01/05 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
vue3.0 搭建项目总结(详细步骤)
2019/05/20 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
Python的CGIHTTPServer交互实现详解
2018/02/08 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
乔迁宴答谢词
2014/01/21 职场文书
主题婚礼策划方案
2014/02/10 职场文书
父母对孩子说的话
2014/04/12 职场文书
工程售后服务承诺书
2014/05/21 职场文书
解除施工合同协议书
2014/10/17 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
辩护词格式
2015/05/22 职场文书
2016年国培心得体会及反思
2016/01/13 职场文书
python - asyncio异步编程
2021/04/06 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
2021/05/13 Python
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang