Tag: 文件存储

如何通过Java EE Web应用程序在服务器(Web容器)上存储文件?

我开发了一个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并且文件没有不要存储在服务器上。 当我检查API for ServletContext.getRealPath()方法时,我发现了以下内容: public java.lang.String getRealPath(java.lang.String path) 返回包含给定虚拟路径的实际路径的String。 例如,路径”/index.html”返回服务器文件系统上的绝对文件路径,该请求将由”http://host/contextPath/index.html” ,其中contextPath是此ServletContext的上下文路径。 返回的实际路径将采用适合运行servlet容器的计算机和操作系统的forms,包括正确的路径分隔符。 如果servlet容器由于任何原因(例如,当从.war存档提供内容时)无法将虚拟路径转换为实际路径,则此方法返回null。 那么,我是否可以通过其他方式在这些服务器上存储文件,这些文件为getServlet().getServletContext().getRealPath(“”)返回getServlet().getServletContext().getRealPath(“”)