我正在按照以下文檔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> }
每當我提交此表格時,我都會收到「文件上傳」消息。