Java - 从网络上下文加载文件

Java - load file from web context

我不明白为什么 fi.exists() returns 这里是假的。我可以通过位于 contextPath+"/images/default.png

的浏览器浏览到该文件
String contextPath = req.getContextPath();
File fi = new File(contextPath+"/images/default.png");
exists = fi.exists();

我认为您误解了上下文路径是什么。

如果您的应用程序部署在 yourdomain.com/app,上下文路径将为 /app

用于告诉客户端去哪里寻找资源。

当您执行 contextPath+"/images/default.png" 时,您的路径将取决于部署路径(在本例中为文件 /app/images/default.png)。

如果你想要安装应用服务器旁边的文件,你可以使用"images/default.png"

如果您想访问资源文件,您可能想尝试 Thread.currentThread().getContextClassLoader().getResource("images/default.png") 而不是文件。

如果你想检查上下文相关的资源是否存在,你可以这样做:

boolean exists=req.getServletContext().getResource("images/default.png")!=null;`

String path=req.getServletContext().getRealPath("images/default.png");`

我需要使用 getRealPath() 而不是 getContextPath():

String path = req.getServletContext().getRealPath("/images/default.png");
File fi = new File(path);