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下连接mssql2005的代码
Jan 17 PHP
php获取用户IPv4或IPv6地址的代码
Nov 15 PHP
PHP中函数rand和mt_rand的区别比较
Dec 26 PHP
PHP常用编译参数中文说明
Sep 27 PHP
laravel 5 实现模板主题功能(续)
Mar 02 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
php中实现进程锁与多进程的方法
Sep 18 PHP
PHP foreach遍历多维数组实现方式
Nov 16 PHP
PHP重定向与伪静态区别
Feb 19 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
Oct 21 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程序员的13个好习惯小结
2012/02/20 PHP
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
基于dom编程中 动态创建与删除元素的使用
2013/04/17 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
2018/09/30 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
python网络编程实例简析
2014/09/26 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
2019/02/22 Python
Python3几个常见问题的处理方法
2019/02/26 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
安纳塔拉酒店度假村及水疗官方网站:Anantara Hotel
2016/08/25 全球购物
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
教师远程培训感言
2014/03/06 职场文书
增员口号大全
2014/06/18 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
担保书格式范文
2015/09/22 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
使用CSS实现一个搜索引擎的原理解析
2021/09/25 HTML / CSS