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 $ $TemporaryFile.html

于 2015-10-11T23:07:00.510 に答える