首页 > 代码库 > 文件下载时附件名乱码问题
文件下载时附件名乱码问题
文件下载过程中,会出现中文名乱码或者文档名称中含有空格的,需要处理下,否则要么乱码,要么空格变成了“+”号,有点头疼。
临时想到一种办法:
即:
//定义输出文件编码及类型和文件名
?
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转换为空格,这样又空格再转换回来,就不影响下载的文件名称了,呵呵!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。