Thinking
快乐编程,开心生活
posts - 21, comments - 27, trackbacks - 0, articles - -5
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
文件下载中的汉字编码问题
Posted on 2007-02-07 14:32
lixw
阅读(245)
评论(0)
编辑
收藏
1
public
void
doDownLoad(HttpServletRequest request, HttpServletResponse response,
2
String absolutePath)
{
3
4
//
设置响应头信息
5
response.setContentType(
"
application/octet-stream;charset=UTF-8
"
);
6
log.debug(
"
GET:
"
+
absolutePath);
7
8
String str
=
FilePathParseUtil.getFileNameByPath(absolutePath);
9
//
调用自定义的编码函数,解决不同浏览器上对汉字编码的处理
10
str
=
this
.encodeFileName(request, str)
==
null
?
str:
this
.encodeFileName(request, str);
11
//
设置response头信息,从而显示正确的文件名,并弹出另存对话框
12
response.setHeader(
"
Content-Disposition
"
,
"
attachment; filename=
"
13
+
str);
14
OutputStream out
=
null
;
15
try
{
16
//
从response得到输出流,从而向客户端写出文件
17
out
=
response.getOutputStream();
18
}
catch
(IOException e)
{
19
log.error(
"
output stream is null
"
);
20
e.printStackTrace();
21
}
22
this
.doDownLoad(out, absolutePath);
23
}
24
25
/** */
/**
26
* 根据不同浏览器对文件名进行编码
27
*
@param
request 客户端请求
28
*
@param
fileName 文件名
29
*
@return
编码后的文件名
30
*/
31
public
String encodeFileName(HttpServletRequest request, String fileName)
{
32
String agent
=
request.getHeader(
"
USER-AGENT
"
);
33
try
{
34
if
(
null
!=
agent
&&
-
1
!=
agent.indexOf(
"
MSIE
"
))
{
35
return
URLEncoder.encode(fileName,
"
UTF-8
"
);
36
}
else
if
(
null
!=
agent
&&
-
1
!=
agent.indexOf(
"
Mozilla
"
))
{
37
return
"
=?UTF-8?B?
"
+
38
new
String(
39
Base64.encodeBase64(
40
fileName.getBytes(
"
UTF-8
"
)
41
)
42
)
+
"
?=
"
;
43
}
else
{
44
return
fileName;
45
}
46
}
catch
(UnsupportedEncodingException e)
{
47
return
null
;
48
}
49
}
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
Powered by:
BlogJava
Copyright © lixw
日历
<
2007年2月
>
日
一
二
三
四
五
六
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
留言簿
(1)
给我留言
查看公开留言
查看私人留言
相册
一升的眼泪
最爱篮球
搜索
最新评论
1. re: 利用DWR实现文件上传进度条
很不错
--shenw
2. re: 张晓风-绿色的书简
亦秀亦豪,让人感动!
--lixw
3. re: 多线程监听文件改动
有没有办法做个监听程序放到服务器里自动运行?
--elary
4. re: struts2学习Tips
评论内容较长,点击标题查看
--kawaii
5. re: struts2学习Tips
评论内容较长,点击标题查看
--kawaii