Play Framework 2.5.9 Scala 处理 multipart/form-data 文件字段总是一些

Play Framework 2.5.9 Scala handling multipart/form-data file field allways Some

我正在关注此处 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))
        }
      )
    }
  }

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

[debug] application - Some(FilePart(myfilefield,,Some(application/octet-stream),TemporaryFile(/var/folders/n3/8nrp7hw94bqbsjbcz00n5hk40000gn/T/playtemp4371116121043398878/multipartBody1548294152084205009asTemporaryFile)))

我不明白为什么会这样。如果我在提交表单之前没有select文件,我认为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>

}

每当我提交此表单时,我都会收到 "File uploaded" 消息。

我发现这是一个错误:https://github.com/playframework/playframework/issues/6203