44544


fileuploadの実装にあたって、
MultipartFormData.FilePartに格納されている情報をtagとしてmysqlにinsertしたいと考えています。

問題のある箇所は以下の通りです。

(FileUploadController.scala)

[code]

     def upload = silhouette.SecuredAction.async(parse.multipartFormData(handleFilePartAsFile))
     { implicit request =>
    
        val fileOption = request.body.file("picName").map {
    
          case FilePart(key, filename, contentType, file) =>
            logger.info(s"key = ${key}, filename = ${filename}, contentType = ${contentType}, file = $file")
    
            val data = operateOnTempFile(file)
    
        FileUploadFormSupport.picsave(FilePart(key, filename, contentType, file))
    
             data
     
        }
    
[/code]

(FileUploadFormSupport.scala)

[code]

    def picsave() :Unit = {
        //sql
    }
    
[/code]

> def picsave() :Unit = {

の括弧の中に、例えばmodels.User.scalaにあるcase class を渡す場合、

> def insert(data:Data) :Unit =

などと書く部分です。例えばそのまま、

> def picsave(FilePart(key, filename, contentType, file)): Unit =
>
> def picsave(FilePart(key:String, filename:String, contentType:String,
> file)): Unit =
>
> def picsave(key:String, filename:String, contentType:String, file:A) : Unit
> =

と書いてしまうとコンパイルエラーが出てしまうので、ご回答いただく思いました。

参考；  
<https://www.playframework.com/documentation/2.5.8/api/java/play/mvc/Http.MultipartFormData.FilePart.html>


CC BY-SA 4.0
2018-06-05T13:55:31.753
44541
2018-06-06T02:04:53.077
2020-06-17T08:14:45.997
-1
28048
question
scala playframework
pass result values of MultipartFormData.FilePart


picsaveにFilePart型のデータを渡したい、ということであれば、

[code]

    def picsave(file: FilePart): Unit
    
[/code]

のような形になるかと。

> def picsave(FilePart(key, filename, contentType, file)): Unit =

これはJavaであれば大体以下のようなコードと同じなのでコンパイルエラーになります。

[code]

    public void picsave(new FilePart(key, filename, contentType, file)) {
    }
    
[/code]


CC BY-SA 4.0
2018-06-05T23:14:22.950
44544
2018-06-05T23:14:22.950
9658
44541
answer