Forms 如何使用Scala持久化上传到Play framework的文件?
我有一个上传文件的表单,它引导以下控制器操作方法:Forms 如何使用Scala持久化上传到Play framework的文件?,forms,scala,file-upload,playframework,controller,Forms,Scala,File Upload,Playframework,Controller,我有一个上传文件的表单,它引导以下控制器操作方法: object FileUpload extends Controller { def upload() = Action(parse.multipartFormData) { implicit request => { val form = Form(tuple( "description" -> text,
object FileUpload extends Controller
{
def upload() = Action(parse.multipartFormData)
{
implicit request =>
{
val form = Form(tuple(
"description" -> text,
"image" -> ignored(request.body.file("image")).verifying("File missing", _.isDefined)
))
form.bindFromRequest.fold(
formWithErrors => { Ok(views.html.files.uploadForm(formWithErrors)) },
values =>
{
request.body.file("image").map{ imageFile =>
imageFile.ref.moveTo(new File("tmp/images"))
Ok("Retrieved file %s" format imageFile.filename)
}.getOrElse(BadRequest("File missing!"))
}
)
}
}
在创建“tmp/images”目录之后,当我通过表单提交文件时,我将得到预期的Ok响应
但是,当我查看“tmp/images”目录时,它仍然是空的
那么,这幅图像将走向何方?还有,我如何保存它?您在哪里创建了“tmp/images”目录。。。?这里的“tmp/images”路径是相对于您的根项目目录的。在我在那里创建它之前,我会收到错误,说路径不存在,所以它必须在正确的位置。您缺少的是提供的路径不是有效的文件路径。您需要提供一个文件名
imageFile.ref.moveTo(新文件(“tmp/images/”+imageFile.filename))
应该可以做到这一点。它很管用!如果你能回答这个问题,我很乐意接受。没必要。很乐意帮忙。:)