我正在关注此处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> }
每当我提交此表单时,我都会收到“文件已上传”消息。