0
アップロードされたファイルをセッション変数として保持し、別のJSP /サーブレット間で共有できますか? (アップロードするページ以外のページで利用可能なファイル) またはファイルをサーバーに保存する必要がありますか? 他の方法がありますか?セッション内のサーブレット間でアップロードされたファイルを共有する
アップロードされたファイルをセッション変数として保持し、別のJSP /サーブレット間で共有できますか? (アップロードするページ以外のページで利用可能なファイル) またはファイルをサーバーに保存する必要がありますか? 他の方法がありますか?セッション内のサーブレット間でアップロードされたファイルを共有する
はい、可能です。 byte[]
に保存して、セッション属性として保存してください。
byte[] fileContent = getItSomehow();
session.setAttribute("fileContent", fileContent);
// ...
ただしbyte[]
のすべてのbyte
が効果的にサーバーのメモリの1つのバイトを食べることを認識する必要があります。したがって、100MBの大規模なファイルを1つだけ使用して100の同時ユーザー・セッションがある場合、すでに1GBのサーバー・メモリーが消費されています。サーバーに十分なメモリがなく、多くの訪問者がいる場合は、OutOfMemoryError
になる危険があります。あなたがこの方向に行く前に二度考えてください。
ありがとうございます。それを行うための最良の方法は何ですか? –
私はディスクに保存するか、またはメモリに保存することを意味しますか? –
ディスクファイルシステム上の一時フォルダに格納します。 Apache Commons FileUploadは、すでに100KBを超えるファイルについてはデフォルトでこれを行っています。一方、 'File#createTempFile()'を使うとより細かい制御ができます。 – BalusC