function downloadExcelTemplate_Click(){ var url = "downloadExcelTemplate.do?isdebug=true"; location.href = url; }
/** * 下载导入模板 * * @param request * @param response * @return */ @RequestMapping(value = "/downloadExcelTemplate.do", method = RequestMethod.GET, produces = "application/json; charset=utf-8") @ResponseBody public ResponseModel downloadExcelTemplate(HttpServletRequest request, HttpServletResponse response) { ResponseModel responseModel = new ResponseModel(); responseModel.setStatusCode("fail"); String header = request.getHeader("User-Agent").toUpperCase(); String fileName = "z中文"; try { if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) { fileName = URLEncoder.encode(fileName, "utf-8"); fileName = fileName.replace("+", "%20"); //IE下载文件名空格变+号问题 } String filepath = request.getSession().getServletContext().getRealPath("/") +"excel/excel_route.xlsx"; InputStream is = new FileInputStream(filepath); OutputStream os = setRespone(fileName, response); int length = 1024; int readLength = 0; byte buf[] = new byte[1024]; readLength = is.read(buf, 0, length); while (readLength != -1) { os.write(buf, 0, readLength); readLength = is.read(buf, 0, length); } os.flush(); os.close(); responseModel.setStatusCode("success"); } catch (UnsupportedEncodingException e) { getLogger().error("AccountInputController.downloadExcelTemplate method UnsupportedEncodingException :" + e.getMessage(), e); } catch (FileNotFoundException e) { getLogger().error("AccountInputController.downloadExcelTemplate method FileNotFoundException :" + e.getMessage(), e); } catch (Exception e) { getLogger().error("AccountInputController.downloadExcelTemplate method Exception :" + e.getMessage(), e); } return responseModel; }
/** * 设置输出响应下载流 * * @param fileName * @param response * @return * @throws IOException */ private OutputStream setRespone(String fileName, HttpServletResponse response) throws IOException { //输出流 OutputStream os = response.getOutputStream(); //重置输出流 response.reset(); response.setContentType("application/vnd.ms-excel"); //设置响应标题>这里浏览器会提示用户选择下载文件需要存放的路径> //后续生成的文件在输出流关闭后>action返回detailExcel进result指定响应内容为excel>自动写入该excel到该用户指定的路径中 response.setHeader("Content-disposition", "attachment; fileName=" + new String((fileName + ".xlsx").getBytes(), "iso8859-1")); //response.setHeader("Content-disposition", "attachment; fileName=" + URLEncoder.encode(brow,"utf-8")+".xls");(不可用) return os; }