2009-07-31 34 views
1

PHPの世界では、アプリケーションフォルダに「uploads」などのディレクトリを作成するのが一般的です。アップロードされたすべてのファイルはそこに格納され、データベースにはそれらのファイルへの相対パスが格納されます。 Javaの/サーブレットの世界ではサーブレット:アップロードされたファイルをどこに保存しますか?

しかし、私は、アップロードされたファイルを処理するための一般的な方法が何であるかわかりません。アプリケーションディレクトリ内のディレクトリへのパスを取得するのは難しく、WARファイルを再デプロイするとディレクトリ全体が破壊される可能性があります。現時点では、アップロードされたファイルをblobとしてデータベースに保存していますが、これは私の推奨する解決策ではありません。

私の質問は、アップロードしたファイルをどこに保存するのですか?あなたのアプリケーションのファイル構造やアプリケーションサーバ/コンテナサーバに属していないディスク上の任意のフォルダに

+0

なぜブロブを使用しないのですか? –

+1

データベースにファイルを置くのは、ファイルシステムに座っているだけのときにデータベースリソースを消費するだけなので、 – banjollity

+0

あなたはどのリソースを消費すると思いますか?私はデータベースが最終的に構造化ファイルによってバックアップされると考えているので、消費する予定のリソースは(テーブル定義が正しくなっていれば)ディスク容量だけです。 –

答えて

4

。ファイルまたはデータベースの構成として、このフォルダー/フォルダーの絶対パスを保持することができます。

1

なぜ、.war階層外のディレクトリに格納しないのですか?サーブレットパラメータでディレクトリを指定し(設定可能にする)、サーブレットの初期化時にチェック/作成する(最初にファイルをアップロードしたときに最初に爆発することはない)。

0

同じことをしてください。 filesytemのどこかにアップロードフォルダを作成してそこにファイルを貼り付けます。あなたのWARが展開されていない場合は削除されるので、Webコンテナに入れないでください。

0

ブライアンとボリスのようです。アップロードされたファイルをWARディレクトリの外部に保存しないでください。アプリケーションディレクトリ外のパスを取得するのがなぜ難しいのですか?

0

これをデータベースのBLOBフィールドに保存します。現代のデータベースはこれ以上の処理能力があります。サーブレットコンテナの外側に処理要求によってなされるべきパフォーマンスの向上があるとき、あなたが高頻度でファイルを提供しているしている場合

私の唯一の例外は次のようになります。

関連する問題