https://www.playframework.com/documentation/2.5.x/ScalaFileUploadのフォームにファイルのアップロードを処理するためのここにあるドキュメントに従っています。 私のコードはここにある:Play Framework 2.5.9スカラ処理のマルチパート/フォームデータファイルフィールド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とする必要があります。 ファイルが送信されたかどうかを確認するにはどうすればよいですか?
@
:ここ()
@helper.form(action = routes.HomeController.upload, 'enctype -> "multipart/form-data") { <input type="file" name="picture"> <p> <input type="submit"> </p> }
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")
}
}
と私の図である。今、私はちょうど私のコントローラのアクションがされているマニュアルからコードをコピーして、ここで :(同じ結果を得ました
このフォームを送信すると、「ファイルがアップロードされました」というメッセージが表示されます。