2016-08-09 4 views
2

私はOk.sendFileを使ってサーバーからファイルをダウンロードしています。Play Frameworkでファイルを送信した後のクリーンアップ

これを行うには、サーバーのローカルファイルシステムにファイルを作成する必要があります。

ただし、サーバーはファイル自体を使用しておらず、ユーザーの要求ごとに新しいファイルが作成されるため、ダウンロード操作が完了した後でファイルを削除したいと考えています。

私は既に私のアクションを完了し、結果を返したと考えて、これを行うことができますか?

def index = Action { 
    val fileToServe = generateFile("fileToServe.pdf") 
    Ok.sendFile(new java.io.File(fileToServe))} 
// How can I "clean-up" fileToServe.pdf after the d/l completes? 

答えて

7

私はあなたがOk.sendFile方法のonClose引数を使用できるように、play.api.libs.Files.TemporaryFileを使用することをお勧めします。

val fileToServe = TemporaryFile(new File("/tmp/" + tmpname)) 
Ok.sendFile(fileToServe.file, onClose =() => { fileToServe.clean }) 
+0

これは完全に機能します。ありがとう:) –

関連する問題