首页 > 解决方案 > Scala Play 中的多部分文件上传

问题描述

我一直在尝试在我的 Scala Play 服务器上上传文件。我已经按照 Play framework 文档页面上给出的处理文件上传的教程进行操作。按照那里提供的说明,我首先fileuploadform.scala.htmlviews文件夹中创建了一个 HTML 页面。该文件包含以下代码

@helper.form(action = routes.ScalaFileUploadController.upload, 'enctype -> "multipart/form-data") {

<input type="file" name="picture">

<p>
    <input type="submit">
</p>

}

然后,我在控制器中创建了两个动作。一个将接受 GET 请求以加载fileuploadformhtml,另一个将在单击表单上的 Upload 按钮时接受 POST 请求。

控制器 ( ScalaFileUploadController.scala) 中的两个操作是:

def uploadForm = Action {
    Ok(views.html.fileuploadform())
  }

  def upload = Action(parse.multipartFormData) { request =>
    request.body.file("picture").map { picture =>
      val filename = Paths.get(picture.filename).getFileName
      picture.ref.moveTo(Paths.get(s"/path/to/location/$filename"), replace = true)
      Ok("File uploaded")
    }.getOrElse {
      Redirect(routes.ScalaFileUploadController.index).flashing(
        "error" -> "Missing file")
    }
  }

最后,在路由中,我将路由定义为

GET  /uploadForm                    controllers.ScalaFileUploadController.uploadForm
POST /upload                        controllers.ScalaFileUploadController.upload()

应用程序正在端口 xxxx 上运行

当我点击 urlip.ip.ip.ip:xxxx/uploadForm时,我得到一个编译错误

not found: value Paths

该行val filename = Paths.get(picture.filename).getFileName被突出显示。

我是否缺少一些要添加的库或一些语法修改?

标签: scalaplayframeworkmultipartform-data

解决方案


您需要导入以下内容:

import java.nio.file.Paths

推荐阅读