Play Framework 2.5.9 Scala处理多部分/表单数据文件字段一些

时间:2016-11-08 17:11:51

标签: scala playframework playframework-2.0

我正在关注此处https://www.playframework.com/documentation/2.5.x/ScalaFileUpload的文档来处理表单中的文件上传。 我的代码在这里:

  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))
        }
      )
    }
  }

每当我提交此表单时,即使我没有在文件字段中选择文件,我也会在控制台中收到这样的内容:

  

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

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

确定。现在我只是从文档中复制代码并获得相同的结果:( 这是我的控制器动作:

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>

}

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

1 个答案:

答案 0 :(得分:0)