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来写记数器(详细介绍)
Oct 09 PHP
PHP静态新闻列表自动生成代码
Jun 14 PHP
php的一些小问题
Jul 03 PHP
PHP多个文件上传到服务器实例
Oct 29 PHP
php限制文件下载速度的代码
Oct 20 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
php基于CodeIgniter实现图片上传、剪切功能
May 14 PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
Laravel框架模板继承操作示例
Jun 11 PHP
PHP count_chars()函数讲解
Feb 14 PHP
Yii2框架中一些折磨人的坑
Dec 15 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做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
Python3.x和Python2.x的区别介绍
2013/02/12 Python
简述Python中的面向对象编程的概念
2015/04/27 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
基于Python爬取fofa网页端数据过程解析
2020/07/13 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
百联网上商城:i百联
2017/01/28 全球购物
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
String是最基本的数据类型吗?
2013/06/13 面试题
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
应届大学生自荐信格式
2013/09/21 职场文书
应届毕业生简历自我评价
2014/01/31 职场文书
实用的简历自我评价
2014/03/06 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
销售代理协议书
2014/09/30 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
吃通javascript正则表达式
2021/04/21 Javascript
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript