3

我在使文件上传正常工作时遇到一些问题,并且以下代码无法编译。

错误overloaded method constructor File with alternatives: (java.net.URI)java.io.File <and> (java.lang.String)java.io.File cannot be applied to (play.api.mvc.MultipartFormData.FilePart[play.api.libs.Files.TemporaryFile])

代码

def csvimport = Action(parse.multipartFormData) { request =>
      request.body.file("files[]").map { rawfile =>

        val filename = rawfile.filename 
        val contentType = rawfile.contentType
        val tmpFile = new File(rawfile)

        val reader = new CSVReader(new FileReader(tmpFile))

        Ok
      }
      .getOrElse {
        Logger.debug(request.body.toString)
        BadRequest
      }
    }

在运行 CSVReader 之前,是否需要将文件临时存储到磁盘?有没有办法将原始文件上传转换为File内存中的新类?

谢谢!

4

2 回答 2

1

这是我猜你想要达到的目标

https://stackoverflow.com/a/11059295/317452

https://gist.github.com/2939230

这会逐步解析文件的块,而不会将整个原始文件放入内存或磁盘中。

于 2012-06-21T22:56:26.127 回答
0

有同样的问题:

尝试:

request.body.file("Image").ref.file // Java.io.File

request.body 是 play.api.mvc.MultipartFormData

request.body.file("Image").ref 是 play.api.libs.Files.TemporaryFile 这里:https ://www.playframework.com/documentation/2.0/api/scala/play/api/libs/Files $ $临时文件.html

于 2015-10-11T23:07:00.510 回答