2017-07-16 4 views
0

再生アプリケーションの応答でファイルを送信しています。クライアントがファイルをダウンロードすると、ローカルサーバーからファイルをクリーニングしています。再生フレームワークで大きなファイルを送信するときにクライアント切断をキャッチする方法はありますか?

ただし、クライアントが接続を切断すると、一時ファイルはローカルサーバーに残ります。しかし、私はこの切断を処理し、 一時ファイルをクリーンアップしたいと思います。 onDoneEnumerating()について聞いたことがありますが、使用できませんでした。

誰かが切断を処理し、ローカルサーバーから一時ファイルをクリーンアップする最も簡単な方法を教えてもらえますか?

+0

すべての接続の影響を受ける各一時リソースを追跡しないのはなぜですか?接続プールなどのような? – Fabien

+0

詳細を教えてください –

+0

これは私が以前にやっていたことです。接続が受信されるたびに、すべての接続が存在するグローバルオブジェクトに接続を保存します。辞書を使用して、各接続に、使用するリソースまたは割り当てられるリソースを関連付けます。切断されると、使用済みのリソースをクロールして、そのリソースに対して適切な処置をとることが容易になります。切断の検出方法に関しては、私はあなたのフレームワークを知らない。しかしそれは基本的なので、実装されていると思います.-) – Fabien

答えて

0

TemporaryFileは、ファイルを送信するのではなく、一時ファイルの場所に保存する必要があるデータストリームをPlayが受け取った場合です。ファイナライズ時(2.6以前)またはファントムファイル参照時(2.6.x)に削除されます。

断線をキャッチする最も簡単な方法は、OnCloseのブロックにFiles.deleteIfExists

https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#deleteIfExists-java.nio.file.Path-

を呼び出すことです。

https://www.playframework.com/documentation/2.6.x/ScalaFileUpload#Cleaning-up-temporary-files

しょっちゅう一時ファイルのディレクトリを一掃します:それは何らかの理由で動作していないように見える場合は、一時ファイルの刈り取りを使用することができます。

関連する問題