ファイルを正常にアップロードできますが、ファイルはサーバー上の展開されたディレクトリに保存されます。
プロジェクトを削除してプロジェクトをTomcatサーバー7.0に再デプロイするとすぐに、アップロードしたすべてのファイルがそこから削除されます。
Tomcat サーバー 7.0 でサーバー側のテクノロジとして JSF を使用しています。in eclipse 井出
アップロードされたファイルを展開フォルダーに保存しないでください。また、他の人が提案したようにフォルダーにも保存しないでください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 のクラスです (ただし、ファイル コピーのコードを自分で記述できます。これは単なるヘルパー クラスです)。