我能够成功上传文件,但文件会存储到服务器上的已部署目录中。
一旦删除项目并将项目重新部署到我的Tomcat服务器7.0,我上传的所有文件都会从中删除。
我使用JSF作为我的服务器端技术与Tomcat服务器7.0。在eclipse Ide中
答案 0 :(得分:2)
您应该不将上传的文件存储在deploy文件夹中,并且绝对不会按照其他人的建议存储在WEB-INF
文件夹中。重新部署webapp时它们会丢失,原因很简单,因为它们不包含在原始WAR文件中。
您需要将上传的文件存储在deploy文件夹之外的固定路径上。例如/var/webapp/uploads
。您始终可以通过向Tomcat添加新的<Context>
来使该文件夹可用于Web。
答案 1 :(得分:0)
将文件保存到/ 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的类(但你可以自己编写文件副本的代码,它只是帮助类)