Chinaunix首页 | 论坛 | 博客
  • 博客访问: 231969
  • 博文数量: 48
  • 博客积分: 1088
  • 博客等级: 少尉
  • 技术积分: 339
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-27 10:24
文章分类

全部博文(48)

文章存档

2012年(48)

我的朋友

分类: LINUX

2012-10-21 10:40:55

在进行Web开发时,可能遇到遇到以下几种需求:

l          希望某类或者某已知MIME 类型的文件(比如:*.gif;*.txt;*.htm)能够在访问时弹出文件下载对话框。

l          希望客户端下载时以指定文件名显示。

l          希望某文件直接在浏览器上显示而不是弹出文件下载对话框。

对于上面的需求,使用Content-Disposition属性就可以解决。下面是代码示例:

response.setHeader("Content-disposition", "attachment;filename=" + fileName)

//Content-disposition为属性名。

//attachment表示以附件方式下载。如果要在页面中打开,则改为inline

//filename如果为中文,则会出现乱码。解决办法有两种:

//1、使用fileName = new String(fileName.getBytes(), "ISO8859-1")语句

//2、使用fileName = HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8)语句

阅读(8090) | 评论(1) | 转发(0) |
0

上一篇:http文件下载原理

下一篇:Tornado上传图片

给主人留下些什么吧!~~

atsivsucks2013-04-13 11:50:46

这样做在除了Chrome和IE浏览器之外会直接显示%编码的文件名,参考:
http://greenbytes.de/tech/tc2231/#attwithfnrawpctenca

符合标准的下载“中文.txt”应该是:
Content-Disposition: attachment; filename*=UTF-8''%E4%B8%AD%E6%96%87.txt

参考:
http://stackoverflow.com/questions/93551/how-to-encode-the-filename-parameter-of-content-disposition-header-in-http

可惜的是,IE8和以下不支持符合标准的做法,建议检测是否为IE8和以下是的话使用你现在这个做法。