Java Servlet 中 getRealPath() 返回 null 的原因及解决方法
可能以下几种原因导致 path 的值为 null:
-
上传文件的目录 '/upload/' 在当前的 ServletContext 中不存在。如果目录不存在,getRealPath 方法将返回 null。
-
你正在使用 Servlet 3.0 之前的版本。在 Servlet 3.0 之前的版本中,getRealPath 方法可能返回 null,因为它依赖于底层的文件系统路径映射。在 Servlet 3.0 之后的版本中,getRealPath 方法被弃用,并且不再保证可用性。
-
你正在运行在一个虚拟化环境中,如 Tomcat 的 Context 容器。在这种情况下,getRealPath 方法可能无法解析虚拟路径,因此返回 null。
如果你确定上述原因都不适用,并且仍然无法解决问题,可以尝试使用其他方法来获取文件上传目录的实际路径,如使用 ServletContext 的 getResource 方法来获取相对于 Web 根目录的 URL,然后再通过 URL 对象的 getPath 方法获取路径。例如:
String path = request.getServletContext().getResource('/upload/').getPath();
原文地址: https://www.cveoy.top/t/topic/mMZH 著作权归作者所有。请勿转载和采集!