【问题标题】:Delete file from temp folder after uploading in Play Framework在 Play Framework 中上传后从临时文件夹中删除文件
【发布时间】:2015-04-24 20:08:22
【问题描述】:

我使用的是2.2.3版本的Play Framework,我上传文件的sn-p如下:

def process = SecuredAction(false, None, parse.temporaryFile) {
request =>

    val uploadedFile = request.body.file

    service.processFile(uploadedFile)    
    ...

 }

这个 parse.temporaryFile 解析器正在用类似于这个的文件污染我的临时文件夹: requestBody4950142040693742317asTemporaryFile_1424693062067.zip。我想从我的临时文件夹中删除这些文件。有什么建议如何防止它们创建或上传后如何删除它们?

【问题讨论】:

    标签: scala playframework-2.0 temp


    【解决方案1】:

    我从未使用过 Play 的上传功能,但您似乎可以这样做:

    service.processFile(uploadedFile)
    request.body.clean()
    Ok("All done!")
    

    我假设 service.processFile 在这里是同步的。

    【讨论】:

      【解决方案2】:

      @AndreasDuRietz 是正确的,您可以调用request.body.clean(),这只是删除底层File 的别名。但是,这不是必需的。 TemporaryFile 覆盖 finalize,当对象被垃圾回收时,它会为你调用 clean()

      请参阅source

      【讨论】:

      • 但请记住,finalize 可能永远不会被调用。 See why
      【解决方案3】:
                      /*delete to-server-temp-folder uploaded file*/
                        request.body.file("Img").foreach {
                          case FilePart(_, _, _, ref, _, _) =>
                            val file = new File(ref.path.toString)
                            if (file.exists()) file.delete()
                        }
      

      【讨论】:

        【解决方案4】:

        玩! 2.7.x

            request.body.delete()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-12-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-30
          • 2023-03-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多