Scala Play 2.0.2多文件上传
我是一个新的球员和斯卡拉。我的要求是提供一个浏览按钮,我们可以选择多个文件,并上传这些文件。以下是我编写的代码: 在scala.html文件中:Scala Play 2.0.2多文件上传,scala,playframework-2.0,Scala,Playframework 2.0,我是一个新的球员和斯卡拉。我的要求是提供一个浏览按钮,我们可以选择多个文件,并上传这些文件。以下是我编写的代码: 在scala.html文件中: <input type="file" name="files" multiple="multiple" id="files" size="30"> 但是我不能上传多个文件。你知道这里有什么问题吗?首先,你不需要 ="multiple" 这相当有效 <input type="file" name="files" multiple i
<input type="file" name="files" multiple="multiple" id="files" size="30">
但是我不能上传多个文件。你知道这里有什么问题吗?首先,你不需要
="multiple"
这相当有效
<input type="file" name="files" multiple id="files" size="30">
例如,如果使用帮助程序
@helper.form(action = routes.MyController.submit(), 'enctype -> "multipart/form-data", 'id -> "myform")
或者如果你不是
<form action=... enctype="multipart/form-data" id="myform">
在您的控制器中,您希望尝试类似的东西(对于Java,我相信它在Scala中是类似的)
//提交时获取绑定到表单的所有文件
List plate_files=request().body().asMultipartFormData().getFiles();
//从特定名称或id获取文件
FilePart myfile=request().body().asMultipartFormData().getFile(“文件”);
然后,您可以使用这些函数遍历FilePart对象
希望它在scala中类似
干杯如果您愿意,也可以这样尝试:
def uploadFiles: Action[AnyContent] { request =>
val files: Option[Seq[FilePart[TemporaryFile]]] = request.body.asMultipartFormData.map(_.files)
val filesJavaIO: Option[Seq[File]] = files map { fileSeq => fileSeq map { file =>
file.ref.moveTo(new File("/tmp/myFiles"))
}
}
Ok("File uploaded")
}
非常简单,只需看看这个工作代码-
def uploadAll = Action(parse.multipartFormData) { implicit request =>
val files = request.body.files.toArray
files.foreach(file => {
val filename = Paths.get(file.filename).getFileName
file.ref.moveTo(Paths.get(s"C:/Users/tusharw/Documents/Play Uploads/$filename"), replace = true)
})
Ok("Files uploaded")
}
或者,正如@robor78所说,这是一种更简单的方法-
def uploadAll = Action(parse.multipartFormData) { implicit request =>
request.body.files map { file =>
file.ref.moveTo(Paths.get("C:/Users/tusharw/Documents/Play Uploads/"+file.filename), replace = true)
}
Ok("Files uploaded")
}
并将多个
添加到您的输入中。就这样
注意,这里的路径
属于java.nio.file.Paths
。您可以改用新文件(“/somepath”)
当你上传多个文件时,会发生什么?它们会被忽略吗?你收到错误消息了吗?有人能告诉我怎么得到吗?我是指上传的图片大小。非常感谢,所以usefulrequest.body.files映射{file=>file.ref.moveTo(新文件(“/tmp/myfiles/”+file.filename))}
def uploadFiles: Action[AnyContent] { request =>
val files: Option[Seq[FilePart[TemporaryFile]]] = request.body.asMultipartFormData.map(_.files)
val filesJavaIO: Option[Seq[File]] = files map { fileSeq => fileSeq map { file =>
file.ref.moveTo(new File("/tmp/myFiles"))
}
}
Ok("File uploaded")
}
def uploadAll = Action(parse.multipartFormData) { implicit request =>
val files = request.body.files.toArray
files.foreach(file => {
val filename = Paths.get(file.filename).getFileName
file.ref.moveTo(Paths.get(s"C:/Users/tusharw/Documents/Play Uploads/$filename"), replace = true)
})
Ok("Files uploaded")
}
def uploadAll = Action(parse.multipartFormData) { implicit request =>
request.body.files map { file =>
file.ref.moveTo(Paths.get("C:/Users/tusharw/Documents/Play Uploads/"+file.filename), replace = true)
}
Ok("Files uploaded")
}