scala - 如何使用 Scala 在 Play!2 中提供上传的文件?

标签 scala playframework playframework-2.0

我试图允许用户将照片上传到服务器然后查看它们。上传按照描述进行 in this guide 。这是代码:

def upload = Action(parse.multipartFormData) { request =>
  request.body.file("picture").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"
    )
  }
}

我不清楚如何将上传的图像返回给想要查看它们的用户。现在,我在自己的计算机上托管服务器,因此指南中的代码片段将文件写入我的 D: 驱动器,该驱动器无法(也不应该)从 Internet 获得。据我所知,有两个选项:

  1. 将照片存储在我的项目(专用于 Assets 的文件夹)中的/public 文件夹下。参见这里:http://www.playframework.org/documentation/2.0/Assets

  2. 编写我自己的 Controller ,从我的驱动器中提供来自自定义位置的图像。

对于1,我不确定这是否是 Assets 的目的。 对于2,我不知道如何编写这样的 Controller 。

最佳答案

简单的例子是

def index = Action {
  Ok.sendFile(new java.io.File("/tmp/fileToServe.pdf"))
}

https://www.playframework.com/documentation/2.4.x/ScalaStream#Serving-files 有“服务文件”部分这解释了如何提供文件

关于scala - 如何使用 Scala 在 Play!2 中提供上传的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11451246/

相关文章:

postgresql - Play 的进化并没有在 Heroku 上运行

javascript - 更改 d3 中数据绘制的顺序

java - Play Framework - 在开发模式下自动重新编译期间出现 NullPointerException

scala - 如何在 Scala 的方法体之外实现早期返回?

scala - Slick - 更新完整对象或超过 22 列

java - 上传空文件会自动导致 NPE

java - 如何清除/删除游戏框架中(功能)测试的数据库内容

scala - Play 2.0 是否禁用 1.x 中提供的包罗万象的路由使用

playframework-2.0 - 为什么 scala 函数中的 block 变量在执行内部 block 后无法更新?

java - 在 Tomcat 上运行 Play Framework 2.0?