gistfile1.txt // 前台的中文传递后后台乱码的处理思路:// 1.js编码encodeURI(encodeURI(URL)),编码两次// 2.服务器端解码 URLDecoder.decode(request.getParameter("para"),"UTF-8")$scope.downloadProvinceModel = function
// 前台的中文传递后后台乱码的处理思路: // 1.js编码encodeURI(encodeURI(URL)),编码两次 // 2.服务器端解码 URLDecoder.decode(request.getParameter("para"),"UTF-8") $scope.downloadProvinceModel = function(){ var url = ffc.context.contextPath + '/strc/reqChgOrderService/downloadFileByName?filename='+encodeURI(encodeURI("模型导入模板.xlsx")); window.location=url; }; @RequestMapping(value = "downloadFileByName") public void downloadFileByName(HttpServletRequest request, HttpServletResponse response) { try { FileOperateUtil.FILEDIR = request.getSession().getServletContext().getRealPath("/") + "download/"; String downloadfFileName = URLDecoder.decode(request.getParameter("filename"),"UTF-8"); String fileName = downloadfFileName; //如果是IE8,9,10和IE11,则文件名称需要编码成UTF-8,其他浏览器无需处理 if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0||request.getHeader("User-Agent").indexOf("like Gecko")>0) { fileName = URLEncoder.encode(fileName, "UTF-8"); } response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", fileName)); FileOperateUtil.download(downloadfFileName, response.getOutputStream()); } catch (IOException e) { e.printStackTrace(); } } public static void download(String downloadfFileName, ServletOutputStream out) { try { FileInputStream in = new FileInputStream(new File(FILEDIR + "/" + downloadfFileName)); write(in, out); } catch (FileNotFoundException e) { try { FileInputStream in = new FileInputStream(new File(FILEDIR + "/" + new String(downloadfFileName.getBytes("iso-8859-1"),"utf-8"))); write(in, out); } catch (IOException e1) { e1.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } }