java 上传下载文件由中文引起的问题
上传下载附件时,对中文名称的文件要进行转码才能正常适应IE firefox chrome等主流浏览器
@RequestMapping(value = "/downloadAttachment", method = RequestMethod.GET) public void downloadAttachment(final HttpServletRequest request, final HttpServletResponse response, final String location, final String fileName) throws CMSItemNotFoundException, IOException { InputStream inputStream = null; try { inputStream = this.uploadFileFacade.downloadOrderAttachment(location); response.encodeURL("UTF-8"); String headerValue = "attachment;"; headerValue += " filename=\"" + encodeURIComponent(fileName) + "\";"; headerValue += " filename*=utf-8''" + encodeURIComponent(fileName); response.setHeader("Content-Disposition", headerValue); final byte[] b = new byte[1024]; int len; while ((len = inputStream.read(b)) != -1) { response.getOutputStream().write(b, 0, len); } } catch (final Exception e) { // YTODO Auto-generated catch block e.printStackTrace(); } finally { inputStream.close(); }
public static String encodeURIComponent(final String value) { try { return URLEncoder.encode(value, "UTF-8").replaceAll("\\+", "%20"); } catch (final UnsupportedEncodingException e) { e.printStackTrace(); return null; } }
前端JS中进行转码,避免浏览器中出现中文(特别是IE)
'encodeURI(locationUrl)+'">删除