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作的文本留言本的例子(三)
Oct 09 PHP
一贴学会PHP 新手入门教程
Aug 03 PHP
rrmdir php中递归删除目录及目录下的文件
May 15 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
php下获取http状态的实现代码
May 09 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
php绘制一个扇形的方法
Jan 24 PHP
PHP中JSON的应用技巧
Oct 10 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
thinkphp5实现无限级分类
Feb 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合并数组+与array_merge的区别分析
2010/08/01 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
驱动事件的addEvent.js代码
2007/03/27 Javascript
用javascript实现给图片加链接
2007/08/15 Javascript
javascript下过滤数组重复值的代码
2007/09/10 Javascript
Exjs 入门篇
2010/04/07 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
2018/10/02 Javascript
微信小程序中的上拉、下拉菜单功能
2020/03/13 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
Python中的hypot()方法使用简介
2015/05/18 Python
Django的数据模型访问多对多键值的方法
2015/07/21 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
幼儿园老师寄语
2014/04/03 职场文书
离职保密承诺书
2014/05/28 职场文书
高中生第一学年自我鉴定2015
2014/09/28 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
汽车转让协议书
2015/01/29 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
Elasticsearch 数据类型及管理
2022/04/19 Python
vue使用watch监听属性变化
2022/04/30 Vue.js