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 相关文章推荐
在JavaScript中调用php程序
Mar 09 PHP
php session处理的定制
Mar 16 PHP
JpGraph php柱状图使用介绍
Aug 23 PHP
PHP获取当前页面URL函数实例
Oct 22 PHP
php字符串过滤与替换小结
Jan 26 PHP
php生成不重复随机数、数组的4种方法分享
Mar 30 PHP
PHP加密解密实例分析
Dec 25 PHP
ThinkPHP实现分页功能
Apr 28 PHP
php生出随机字符串
Jul 06 PHP
PHP实现分布式memcache设置web集群session同步的方法
Apr 10 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
PHP多个图片压缩成ZIP的方法
Aug 18 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简介
2006/10/09 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
PHP实现递归无限级分类
2015/10/22 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
PHP静态成员变量和非静态成员变量详解
2017/02/14 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
实例分析10个PHP常见安全问题
2019/07/09 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
laravel入门知识点整理
2020/09/15 PHP
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
jquery实现select下拉框美化特效代码分享
2015/08/18 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
详解react如何在组件中获取路由参数
2017/06/15 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
git进行版本控制心得详谈
2017/12/10 Python
Python AutoCAD 系统设置的实现方法
2020/04/01 Python
浅谈Python __init__.py的作用
2020/10/28 Python
用python批量下载apk
2020/12/29 Python
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
KOHLER科勒美国官网:国际著名卫浴橱柜领先品牌
2020/06/27 全球购物
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
2014公司年终工作总结
2014/12/19 职场文书
毕业典礼主持词
2015/06/29 职场文书
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫