我正在按照以下文档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> }
每当我提交此表格时,我都会收到“文件上传”消息。