记录java工程jar包发布时下载功能出现找不到文件的问题
在做下载功能时,我们会发现明明在IED中运行的好好的,可是一部署,功能就不好用了。其中一个原因可能就是找不到要下载的文件路径了。如果报类似下面的错误,那肯定就是这个问题了,报错信息如下:
java.io.FileNotFoundException: file:\demo.jar!\BOOT-INF\classes!\template-files\crl\demo.xlsx (文件名、目录名或卷标语法不正确。)
解决办法是使用getResourceAsStream方法,该方法同样适合war包,示例如下:
@RequestMapping(value = "downLoad") public void downLoad2(HttpServletResponse response) { String path = "template-files/crl/demo.xlsx"; try { InputStream inputStream =this.getClass().getClassLoader().getResourceAsStream(path); OutputStream outputStream = response.getOutputStream(); response.setContentType("application/x-download"); response.addHeader("Content-Disposition", "attachment;filename="+"demo.xlsx"); IOUtils.copy(inputStream, outputStream); outputStream.flush(); inputStream.close(); outputStream.close(); } catch (Exception e) { e.printStackTrace(); } }
文件路径:resources/template-files/crl/demo.xlsx