0

プログラムに、ユーザーが自分のデータをファイルにダウンロードできる機能を作成しようとしています。

現在、コントローラの 1 つに、特定の名前の File オブジェクトを作成し、FileWriter を使用してコンテンツをファイルにロードするメソッドがあります。終了後、File オブジェクトは renderBinary() に渡されます。これにより、期待どおりにファイルがユーザーに送信されます。

ただし、これによりファイルが Play! 内に保存されます。送信する前にプロジェクト ディレクトリ。これは、多くのユーザーがファイルを生成してダウンロードしようとするとどうなるのだろうと思います。それらは互いに上書きしますか?

要するに、ファイルを生成して renderBinary 経由で送信する最良の方法は何ですか?

4

2 に答える 2

6
File f = File.createTempFile("prefix", "suffix");       
f.deleteOnExit();
// put contents into the file
renderBinary(f);
于 2011-12-09T13:36:29.313 に答える
3

マルチユーザー環境では、ファイル データを一定のファイル名で保存することはお勧めできません。別の実行中のスレッドで、ファイルが上書きされたり、別のファイルハンドルが開いているために IO 例外が発生したりするリスクがあります。

より良いアプローチは、サーバー側でファイル名のランダム ハッシュを生成し、それをファイル名として使用することです。

于 2011-12-08T21:29:35.850 に答える