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的array_multisort()使用方法介绍
May 16 PHP
比较strtr, str_replace和preg_replace三个函数的效率
Jun 26 PHP
php使用memcoder将视频转成mp4格式的方法
Mar 12 PHP
高质量PHP代码的50个实用技巧必备(上)
Jan 22 PHP
PHP中类属性与类静态变量的访问方法示例
Jul 13 PHP
PHP页面跳转操作实例分析(header方法)
Sep 28 PHP
PHP面向对象之工作单元(实例讲解)
Jun 26 PHP
PHP实现的分页类定义与用法示例
Jul 05 PHP
PHP创建XML接口示例
Jul 04 PHP
php DES加密算法实例分析
Sep 18 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
Oct 16 PHP
基于ThinkPHP删除目录及目录文件函数
Oct 28 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
19个Android常用工具类汇总
2014/12/30 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
JavaScript的eval JSON object问题
2009/11/15 Javascript
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
关闭浏览器时提示onbeforeunload事件
2013/12/25 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
2016/04/29 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
JQuery常见节点操作实例分析
2019/05/15 jQuery
微信小程序云开发之云函数详解
2019/05/16 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python类继承用法实例分析
2015/05/27 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
django model去掉unique_together报错的解决方案
2016/10/18 Python
Django models.py应用实现过程详解
2019/07/29 Python
Python input函数使用实例解析
2019/11/22 Python
基于python3的socket聊天编程
2020/02/17 Python
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
法国珠宝店:CLEOR
2017/01/29 全球购物
时装界的“朋克之母”:Vivienne Westwood
2017/07/06 全球购物
美国批发供应商:Kole Imports
2019/04/10 全球购物
法律进社区实施方案
2014/03/21 职场文书
大学课外活动总结
2014/07/09 职场文书
个人贷款收入证明
2014/10/26 职场文书
商标侵权律师函
2015/05/27 职场文书
计算机教师工作总结
2015/08/13 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电