【问题标题】:Cannot access pdf files in resources folder无法访问资源文件夹中的 pdf 文件
【发布时间】:2017-09-09 19:36:28
【问题描述】:

我有一个网络应用程序,我将一些 pdf 文件放在资源文件夹中,当用户单击下载按钮时,这些文件会呈现给用户,这就是我阅读文件的方式

ClassLoader classloader = Thread.currentThread().getContextLoader();
File f = new File(classloader.getResource("pdf/report.pdf").getFile);

然后我在响应中渲染文件,当我在 eclipse 中运行它时效果很好。

但是一旦我将它打包成一个war文件并使用apache tomcat管理器部署它,我就无法再访问该文件了,它显示一个500错误,指定的访问文件不可访问。

【问题讨论】:

    标签: spring pdf jakarta-ee model-view-controller web


    【解决方案1】:

    如果我正确理解您的问题,那么您需要获取资源的流并从该资源而不是文件中提供响应。类加载器具有 getResourceAsStream 函数,它应该与您传递给 getResource 的参数相同

    ClassLoader classloader = Thread.currentThread().getContextLoader();
    InputStream stream = classloader.getResourceAsStream("pdf/report.pdf")
    // Copy resource stream to servlet response e.g. using Apache IOUTils
    IOUtils.copy(stream, <servelet response stream>)
    // Don't forget to close stream
    

    Eclipse 最喜欢解析本地文件路径,这在 Web 应用程序环境中可能无法以相同的方式工作。

    【讨论】:

      【解决方案2】:

      打开您的war文件并手动检查“/WEB-INF/classes/”文件夹,您的文件是否存在于该文件夹中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-08
        • 2021-03-24
        • 1970-01-01
        • 2013-04-24
        • 1970-01-01
        • 2018-05-28
        相关资源
        最近更新 更多