2016-11-08 80 views
0

我正在按照以下文档https://www.playframework.com/documentation/2.5.x/ScalaFileUpload处理文件上传的形式。 我的代码是在这里:Play Framework 2.5.9 Scala处理多部分/表单数据文件字段allways一些

def add(method: String) = Action(parse.multipartFormData) { implicit request => 
    if (method == "GET") { 
     Ok(views.html.add(uploadForm)) 
    } else { 
     uploadForm.bindFromRequest().fold(
     hasErrors => BadRequest(views.html.add(hasErrors)), 
     form => { 
      Logger.debug(request.body.file("myfilefield").toString) 
      Ok(views.html.add(uploadForm)) 
     } 
    ) 
    } 
    } 

每当我提出这种形式,即使我没有选择在我得到这样的控制台文件中的字段文件:

[调试]应用 - 一些(FilePart(myfilefield ,,一些(应用/八位字节流),TemporaryFile(在/ var /文件夹/ N3/8nrp7hw94bqbsjbcz00n5hk40000gn/T/playtemp4371116121043398878/multipartBody1548294152084205009asTemporaryFile)))

我可以不明白为什么这样。如果我在提交表单之前没有选择文件,我认为request.body.file("myfilefield")中应该有None。 如何找到文件是否被提交?

好的。现在我只是从文件复制的代码,并得到了相同的结果:( 这里是我的控制器操作:

def upload = Action(parse.multipartFormData) { request => 
    request.body.file("picture").map { picture => 
    import java.io.File 
    val filename = picture.filename 
    val contentType = picture.contentType 
    picture.ref.moveTo(new File(s"/tmp/picture/$filename")) 
    Ok("File uploaded") 
    }.getOrElse { 
    Redirect(routes.HomeController.uploadtest()).flashing(
     "error" -> "Missing file") 
    } 
} 

,这里是我的看法:

@()

@helper.form(action = routes.HomeController.upload, 'enctype -> "multipart/form-data") { 

    <input type="file" name="picture"> 

    <p> 
     <input type="submit"> 
    </p> 

} 

每当我提交此表格时,我都会收到“文件上传”消息。

回答

相关问题