无法访问资源文件夹中的pdf文件

时间:2017-04-13 15:32:53

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

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

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

然后我在响应中渲染文件,当我在eclipse中运行它时,这个工作正常。

但是一旦我将它打包成war文件并使用apache tomcat manager进行部署,我再也无法访问该文件,它显示500错误,指定的访问文件无法访问。

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,那么您需要获取资源流并提供来自该资源的响应,而不是来自文件。类加载器具有函数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应用程序环境中运行。

答案 1 :(得分:-1)

打开您的war文件并手动检查&#34; / WEB-INF / classes /&#34;文件夹是否存在于此文件夹中。