header中Content-Disposition的作用与使用方法

2015-01-24信息快讯网

本文章详细的介绍了关于php header中Content-disposition用法详细,有需要了解header用法的朋友可参考一下

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下面就是不行
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
用Json实现PHP与JavaScript间数据交换的方法详解
解析php中的fopen()函数用打开文件模式说明
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
php常用Output和ptions/Info函数集介绍
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
解析thinkphp基本配置 convention.php
解析:使用php mongodb扩展时 需要注意的事项
ubuntu下编译安装xcache for php5.3 的具体操作步骤
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
php fsockopen伪造post与get方法的详解
基于php split()函数的用法详解
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
PHP autoload与spl_autoload自动加载机制的深入理解
深入理解PHP之数组(遍历顺序) Laruence原创
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
PHP的异常处理类Exception的使用及说明
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
php中json_decode()和json_encode()的使用方法
PHP通过session id 实现session共享和登录验证的代码
php注销代码(session注销)
openflashchart 2.0 简单案例php版
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
iis下php mail函数的sendmail配置方法(官方推荐)
PHP中return 和 exit 、break和contiue 区别与用法
PHP中将字符串转化为整数(int) intval() printf() 性能测试
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
JS中encodeURIComponent函数用php解码的代码
PHP函数spl_autoload_register()用法和__autoload()介绍
PHP spl_autoload_register实现自动加载研究
php数组函数序列之array_splice() - 在数组任意位置插入元素
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
php设计模式 Chain Of Responsibility (职责链模式)
©2014-2024 dbsqp.com