记录java工程jar包发布时下载功能出现找不到文件的问题

  在做下载功能时,我们会发现明明在IED中运行的好好的,可是一部署,功能就不好用了。其中一个原因可能就是找不到要下载的文件路径了。如果报类似下面的错误,那肯定就是这个问题了,报错信息如下:

java.io.FileNotFoundException: file:demo.jar!BOOT-INFclasses! emplate-filescrldemo.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

原文地址:https://www.cnblogs.com/javasl/p/14030796.html