我已经开发了Java EE
Web应用程序。该应用程序允许用户在浏览器的帮助下上传文件。用户上载文件后,此应用程序首先将上载的文件存储在运行该文件的服务器上,然后对其进行处理。
目前,我将文件存储在服务器上,如下所示:
try {
// formFile represents the uploaded file
FormFile formFile = programForm.getTheFile();
String path = getServlet().getServletContext().getRealPath("") + "/"
+ formFile.getFileName();
System.out.println(path);
file = new File(path);
outputStream = new FileOutputStream(file);
outputStream.write(formFile.getFileData());
}
其中,formFile代表上传的文件。
现在,问题在于它在某些服务器上运行良好,但在某些服务器getServlet().getServletContext().getRealPath("")上返回,null因此我得到的最终路径是null/filename,文件未存储在服务器上。
public java.lang.String getRealPath(java.lang.String path)
返回一个字符串,其中包含给定虚拟路径的真实路径。例如,该路径"/index.html"返回服务器文件系统上的绝对文件路径,该路径将由对的请求提供服务"http://host/contextPath/index.html",其中contextPath是此ServletContext的上下文路径。
返回的实际路径将采用适合运行servlet容器的计算机和操作系统的形式,包括适当的路径分隔符。如果servlet容器由于某种原因(例如,当从.war归档中提供内容时)无法将虚拟路径转换为真实路径,则此方法返回null。
那么,有没有用,我可以存储这些服务器也被返回的文件任何其他方式null进行getServlet().getServletContext().getRealPath("")