在Play Framework中发送文件后进行清理

Bar*_* BN 3 scala playframework

我正在使用Ok.sendFile从服务器下载文件.

为此,我需要在服务器的本地文件系统中创建该文件.

但是,由于服务器没有使用文件本身,并且每个用户请求都创建了一个新文件,我想在下载操作完成后删除该文件.

我怎么能这样做,考虑到我已经完成了我的行动并返回了结果?

 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?
Run Code Online (Sandbox Code Playgroud)

Bla*_*... 10

我建议你使用play.api.libs.Files.TemporaryFile,这样你就可以使用方法的onClose参数Ok.sendFile.

val fileToServe = TemporaryFile(new File("/tmp/" + tmpname))
Ok.sendFile(fileToServe.file, onClose = () => { fileToServe.clean })
Run Code Online (Sandbox Code Playgroud)