Playframework 如何为生产中的新公共资产服务?

Playframework 如何为生产中的新公共资产服务?,playframework,playframework-2.6,Playframework,Playframework 2.6,我的Play应用程序在运行时生成一些文件,我希望能够作为公共资产访问这些文件 我试图将它们放在公用文件夹中,该文件夹由 GET /assets/*file controllers.Assets.at(path="/public", file) 但是我无法得到这些文件。服务器似乎只能为构建期间打包的文件提供服务 我还尝试在build.sbt中添加以下行,如另一篇文章所建议的: import com.typesafe.sbt.packager.MappingsHelper._

我的Play应用程序在运行时生成一些文件,我希望能够作为公共资产访问这些文件

我试图将它们放在公用文件夹中,该文件夹由

GET    /assets/*file    controllers.Assets.at(path="/public", file)
但是我无法得到这些文件。服务器似乎只能为构建期间打包的文件提供服务

我还尝试在build.sbt中添加以下行,如另一篇文章所建议的:

import com.typesafe.sbt.packager.MappingsHelper._
    mappings in Universal ++= directory(baseDirectory.value / "public")
有了它,我可以看到公用文件夹中的所有打包资产,但服务器仍然不提供运行时添加的新文件


有什么想法吗?

Playframework将公用文件夹打包到
jar
文件中,并在服务资产时使用它。因此,您无法在运行时在此处添加内容

?

在构建过程中,将处理公用文件夹的内容并将其添加到应用程序类路径中

打包应用程序时,应用程序的所有资产(包括所有子项目)都聚合到一个jar中,位于target/my-first-app-1.0.0-assets.jar中。这个jar包含在发行版中,因此您的Play应用程序可以为其提供服务。此jar还可用于将资产部署到CDN或反向代理

您需要创建文件上传器(您已经创建了)和“文件控制器”aka“资产控制器”。类似于

def file(name: String) = Action {
  Ok.sendFile(new java.io.File("/uploaded/" + name))
}
详情如下: