在Play Framework中上传后,从临时文件夹中删除文件

时间:2015-02-23 13:25:41

标签: scala playframework-2.0 temp

我正在使用2.2.3版本的Play Framework,我的上传文件片段如下:

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

    val uploadedFile = request.body.file

    service.processFile(uploadedFile)    
    ...

 }

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

4 个答案:

答案 0 :(得分:1)

我从未使用Play的上传,但似乎你可以这样做:

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

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

答案 1 :(得分:1)

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

请参阅source

答案 2 :(得分:0)

                /*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()
                  }

答案 3 :(得分:0)

播放! 2.7.x

    request.body.delete()