Scala Play 2.0.2多文件上传

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

我是一个新的球员和斯卡拉。我的要求是提供一个浏览按钮,我们可以选择多个文件,并上传这些文件。以下是我编写的代码:

在scala.html文件中:

<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")
}