我不知道为什么fi.exists()
在这里返回 false。我可以通过浏览器浏览文件contextPath+"/images/default.png
String contextPath = req.getContextPath();
File fi = new File(contextPath+"/images/default.png");
exists = fi.exists();
我不知道为什么fi.exists()
在这里返回 false。我可以通过浏览器浏览文件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);