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/

相关文章:

java - 如何自动将传入的 JSON 绑定(bind)到 POJO? ( Play 2.3.7——Java)

playframework-2.0 - Play 2.0 应用程序的依赖管理

scala - 如何列出 scala 子目录中的所有文件?

scala - Spray Collection ToResponseMarshallable

playframework - playframework 版本 1 会过时吗?

scala - 加密变量的流畅匹配

scala - 防止 sbt 发布自动聚合的根项目

c# - Unity3D:无论其规模如何,都将所有游戏对象转换为相同大小

java - 在 Play 框架中将 Scala session 对象转换为 Java session 对象

scala - Play 框架中的集成测试