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 相关文章推荐
玩转虚拟域名◎+ .
Oct 09 PHP
PHP读取目录下所有文件的代码
Jan 07 PHP
php 什么是PEAR?(第三篇)
Mar 19 PHP
PHP 编写的 25个游戏脚本
May 11 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
Sep 10 PHP
关于php连接mssql:pdo odbc sql server
Jul 20 PHP
基于PHP遍历数组的方法汇总分析
Jun 08 PHP
浅析PHP绘图技术
Jul 03 PHP
php学习笔记之基础知识
Nov 08 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
yii2.0实现pathinfo的形式访问的配置方法
Apr 06 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不允许用户提交空表单(php空值判断)
2013/11/12 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP CURL使用详解
2019/03/21 PHP
javascript replace方法与正则表达式
2008/02/19 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
微信小程序 火车票查询实例讲解
2016/10/17 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
Vue实现简易计算器
2020/02/25 Javascript
Python新手们容易犯的几个错误总结
2017/04/01 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
Tensorflow 实现释放内存
2020/02/03 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
基于python代码批量处理图片resize
2020/06/04 Python
Pandas缺失值2种处理方式代码实例
2020/06/13 Python
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
BASIC HOUSE官方旗舰店:韩国著名的服装品牌
2018/09/27 全球购物
教师演讲稿范文
2014/01/08 职场文书
商场总经理岗位职责
2014/02/03 职场文书
优秀毕业生推荐信范文
2014/03/07 职场文书
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
超市活动计划书
2014/04/24 职场文书
我的长生果教学反思
2014/04/28 职场文书
中学生学习保证书
2015/02/26 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
水浒传读书笔记
2015/06/25 职场文书
伊索寓言读书笔记
2015/06/30 职场文书