SpringBoot+thymeleaf实现模板文件下载
1.配置文件: pom.xml中添加依赖: <!-- thymeleaf模版 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> application.yml文件中添加要下载的模板文件存放地址 添加读取配置的模板存放地址
2.前台代码 <a href="javascript:downTemple()" style="color:#1c99ef;text-decoration:underline;">下载模板</a> function downTemple(){ window.location.href="/UserController/downTemple"; }
3.后台代码 @RequestMapping(value = "/downTemple") public String downTemple(HttpServletResponse response, RedirectAttributes redirectAttributes) { String fileName = "用户信息模板.xlsx";// 设置文件名,根据业务需要替换成要下载的文件名 if (fileName != null) { //设置文件路径 String realPath = configProperties.getExcelTemplateDpwloadPath();//这里使用配置类配置文件路径 File file = new File(realPath , fileName); if (file.exists()) { try { response.setContentType("application/force-download");// 设置强制下载不打开 fileName =java.net.URLDecoder.decode(fileName,"UTF-8"); response.addHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes("GB2312"),"iso8859-1"));// 设置文件名 中文要编码后才可以 } catch (UnsupportedEncodingException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } byte[] buffer = new byte[1024]; FileInputStream fis = null; BufferedInputStream bis = null; try { fis = new FileInputStream(file); bis = new BufferedInputStream(fis); OutputStream os = response.getOutputStream(); int i = bis.read(buffer); while (i != -1) { os.write(buffer, 0, i); i = bis.read(buffer); } } catch (Exception e) { e.printStackTrace(); } finally { if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } } return null; }