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

Spring 无法访问资源文件夹中的pdf文件,spring,pdf,jakarta-ee,model-view-controller,web,Spring,Pdf,Jakarta Ee,Model View Controller,Web,我有一个web应用程序,我将一些pdf文件放在resources文件夹中,当用户单击下载按钮时,这些文件会呈现给他们,这就是我读取文件的方式 ClassLoader classloader = Thread.currentThread().getContextLoader(); File f = new File(classloader.getResource("pdf/report.pdf").getFile); 然后我在一个响应中呈现文件,当我在eclipse中运行它时,效果很好 但是,一

我有一个web应用程序,我将一些pdf文件放在resources文件夹中,当用户单击下载按钮时,这些文件会呈现给他们,这就是我读取文件的方式

ClassLoader classloader = Thread.currentThread().getContextLoader();
File f = new File(classloader.getResource("pdf/report.pdf").getFile);
然后我在一个响应中呈现文件,当我在eclipse中运行它时,效果很好


但是,一旦我将其打包到war文件中并使用apache tomcat manager进行部署,我就无法再访问该文件了。这会显示一个500错误,即指定的访问文件无法访问。

打开war文件并手动签入/WEB-INF/classes/文件夹您的文件是否存在于该文件夹中

如果我正确理解了您的问题,那么您需要获取资源的流,并从该资源而不是文件中提供响应。Classloader具有函数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应用程序环境中可能无法以相同的方式工作