Scala Play 2.0.2 多文件上传

标签 scala playframework-2.0

我是 Play 和 Scala 的新手。我的要求是提供一个浏览按钮,我们可以在其中选择多个文件并上传这些文件。这是我写的代码:

在 scala.html 文件中:

<input type="file" name="files" multiple="multiple" id="files" size="30">

在 Controller 中:
def upload = Action(parse.multipartFormData) { request =>
  request.body.file("files").map { picture =>
    import java.io.File
    val filename = picture.filename 
    val contentType = picture.contentType
    picture.ref.moveTo(new File("/tmp/picture"))
    Ok("File uploaded")
  }.getOrElse {
    Redirect(routes.Application.index).flashing(
      "error" -> "Missing file"
    )
  }
}

但我无法上传多个文件。知道这里有什么问题吗?

最佳答案

首先你不需要

="multiple"

这等效
<input type="file" name="files" multiple id="files" size="30">

要加载多个文件,在定义表单时必须具有该属性
enctype="multipart/form-data"

例如,如果使用助手
@helper.form(action = routes.MyController.submit(), 'enctype -> "multipart/form-data", 'id -> "myform")

或者如果你不是
<form action=... enctype="multipart/form-data" id="myform">

在您的 Controller 中,您想尝试这样的操作(对于 Java,我确定它在 Scala 中类似)
//Get all files bound to the form when submitted 
List<FilePart> plate_files = request().body().asMultipartFormData().getFiles();
//Get files from a specific name or id
FilePart myfile = request().body().asMultipartFormData().getFile("files");

然后你可以使用这些迭代 FilePart 对象

希望它在scala中类似

干杯

关于Scala Play 2.0.2 多文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12309765/

相关文章:

scala - 登录 Akka 时如何缩写 ActorRef 的路径?

list - 检查列表是否没有间隙的函数

performance - 数据类型对 Spark/Scala 中的内存有多重要?

java - 当给定 URL 使用错误的 HTTP 方法时,如何默认返回 405 method not allowed?

mysql - Play Framework 连接数据库

playframework - 从 Play 目录结构之外直接提供文件

java - 从 scala playn 读取图像时出错

list - 将 map 转换为排序列表

java - Play Framework 2.0 中的文件大小限制

java - 如何在Play 2.1中正确编写数据库集成测试?