【问题标题】:Cleanup after sending a file in Play Framework在 Play Framework 中发送文件后的清理
【发布时间】:2016-08-09 12:48:04
【问题描述】:

我正在使用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?

【问题讨论】:

    标签: scala playframework


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      在 Play 2.6.x 中,您可以使用以下代码来清理文件:

      val f = new File("/tmp/text.csv")
      val name = "text.csv"
      Ok.sendFile(content = f,inline = false,fileName = _ => name,
                   onClose = () => f.delete)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-15
        • 2012-04-08
        • 2015-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多