标签:blog class code java int get
文件下载过程中,会出现中文名乱码或者文档名称中含有空格的,需要处理下,否则要么乱码,要么空格变成了“+”号,有点头疼。
临时想到一种办法:
即:
//定义输出文件编码及类型和文件名
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
29
30
31
32
33
34
35
36
37
38
39
40 |
/** * 查看附件 */ public
String view() { try
{ Attachment newAttach = attachService.getAttachment(attach.getId()); if
(attach != null ) { try
{ InputStream inStream = new
FileInputStream(newAttach .getFilePath()); this .getResponse().reset(); this .getResponse().setContentType( "bin" ); this .getResponse().addHeader( "Content-Disposition" , "attachment; filename=\"" + URLEncoder.encode(newAttach.getName(), "UTF-8" ).replace( "+" , "%20" ) + "\"" ); // 循环取出流中的数据 byte [] b = new
byte [ 512 ]; int
len; this .getResponse().getOutputStream().flush(); while
((len = inStream.read(b)) > 0 ) { this .getResponse().getOutputStream().write(b, 0 , len); } inStream.close(); } catch
(FileNotFoundException e) { //e.printStackTrace(); this .sendMessage( "error" ); } catch
(IOException e) { this .sendMessage( "error" ); //e.printStackTrace(); } } } catch
(DAOException e) { e.printStackTrace(); this .addActionMessage(e.getMessage()); return
ERROR; } return
null ; } |
这样,在UrlEncode 之后, 将 "+" 替换成 "%20",因为浏览器将%20转换为空格,这样又空格再转换回来,就不影响下载的文件名称了,呵呵!
标签:blog class code java int get
原文地址:http://www.cnblogs.com/libaoting/p/fileUpload.html