@GetMapping("/download") @ResponseBody @RequiresPermissions("o:p:download") public String fileDownload(HttpServletResponse response, HttpServletRequest request) { String fileName = "xxxx.xlsx"; try { String filePath = getClass().getResource("/excel-template/" + fileName).getPath(); filePath = java.net.URLDecoder.decode(filePath, "utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("multipart/form-data"); response.setHeader("Content-Disposition", "attachment;fileName=" + setFileDownloadHeader(request, fileName)); FileUtils.writeBytes(filePath, response.getOutputStream()); return "ok"; } catch (Exception e) { return "error"; } } public String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException { final String agent = request.getHeader("USER-AGENT"); String filename = fileName; if (agent.contains("MSIE")) { // IE浏览器 filename = URLEncoder.encode(filename, "utf-8"); filename = filename.replace("+", " "); } else if (agent.contains("Firefox")) { // 火狐浏览器 filename = new String(fileName.getBytes(), "ISO8859-1"); } else if (agent.contains("Chrome")) { // google浏览器 filename = URLEncoder.encode(filename, "utf-8"); } else { // 其它浏览器 filename = URLEncoder.encode(filename, "utf-8"); } return filename; }
可以把绘制好的模板放在刚刚我们写的下载目录下