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下面就是不行

最新文章

  1. 非对称加密算法-RSA
  2. jquery对javascript事件的封装一览
  3. iOS七大手势识别
  4. Gradle tip #2: understanding syntax
  5. Linux CP文件夹略过目录的解决
  6. 跨域请求获取Solr json检索结果并高亮显示
  7. Log4Net 配置StmpAppender
  8. php读取memcahed java session
  9. java作业3
  10. sass学习(1)——了解sass
  11. BeRoTinyPascal
  12. SQL注入(四)
  13. 用js 将long类型转换成日期格式
  14. 【算法】二叉查找树实现字典API
  15. vue笔记-生命周期
  16. android 百度地图 定位获取位置失败 62错误
  17. 一个入门rpc框架的学习
  18. at android.view.Surface.unlockCanvasAndPost(Native Method)
  19. Twitter数据挖掘:如何使用Python分析大数据 (3)
  20. English Voice of <<Beautiful now>>

热门文章

  1. 自己动手开发编译器(四)利用DFA转换表建立扫描器
  2. 遍历元素绑定事件时作用域是怎么回事啊,为什么要用this关键字,而直接使用元素本身就不行?
  3. python 3.5 用户登录验证和输入三次密码锁定用户
  4. 微信支付开发+{ping++}微信支付托管
  5. ulimit小结
  6. Gmail 一些需注意的事
  7. C++面试问题总结
  8. 8051单片机I/O引脚工作原理
  9. Linux企业级项目实践之网络爬虫(29)——遵守robots.txt
  10. Delphi default属性