SpringBoot通过接口下载resources下的文件方式
作者:乘风御浪云帆之上
SpringBoot通过接口下载resources目录文件,解决jar包部署后资源路径不可直接访问的问题,利用Resource类加载文件,通过HttpServletResponse返回流,实现用户下载功能
解决的问题
当项目打成jar包进行部署时,一些示例文件放在resources目录下,提供接口供用户访问下载
文件存放位置
接口实现
@RequestMapping("/downloadExampleExcel") @ResponseBody public void downloadExampleExcel(HttpServletResponse response) { InputStream inputStream = null; ServletOutputStream servletOutputStream = null; try { Resource resource = new DefaultResourceLoader().getResource("classpath:example_add_infos.xls"); response.setContentType("application/force-download"); response.setHeader("Content-Disposition", "attachment;fileName=" + "example_add_infos.xls"); inputStream = resource.getInputStream(); servletOutputStream = response.getOutputStream(); IOUtils.copy(inputStream, servletOutputStream); response.flushBuffer(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (servletOutputStream != null) { servletOutputStream.close(); servletOutputStream = null; } if (inputStream != null) { inputStream.close(); inputStream = null; } } catch (Exception e) { e.printStackTrace(); } } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。