我能够成功上传文件,但文件被存储到服务器上的部署目录中。
一旦我删除项目并将项目重新部署到我的 Tomcat 服务器 7.0,我上传的所有文件都会从中删除。
我使用 JSF 作为 Tomcat 服务器 7.0 的服务器端技术。在日食IDE中
您不应该将上传的文件存储在部署文件夹中,也绝对不应该按照WEB-INF
其他人的建议存储在文件夹中。当您重新部署 web 应用程序时,它们会丢失,这仅仅是因为它们未包含在原始 WAR 文件中。
您需要将上传的文件存储在部署文件夹之外的固定路径上。例如/var/webapp/uploads
. 您始终可以通过<Context>
向 Tomcat 添加一个新文件夹来使该文件夹对 Web 可用。
将文件保存到 /WEB-INF 文件夹或硬盘驱动器的任何位置(当然部署目录除外)
我使用了这段代码(它将每个用户的文件存储到它自己的文件夹中)
String path = Util.getPathToFiles() + "WEB-INF" + File.separator + "upload";
try {
path += File.separator + session.getCurrentUser().getLogin();
if (!isFolderExists(path)) {
new File(path).mkdir();
}
path += File.separator + file.getName();
FileUtils.copyFile(file, new File(path));
} catch (IOException ex) {
Logger.getLogger(ThesisBean.class.getName()).log(Level.SEVERE, null, ex);
} finally {
file.delete();
}
getPathToFiles
只需从 ServletContext 返回 realPath,FileUtils 是来自 Apache IO 的类(但您可以自己编写文件复制代码,它只是帮助类)