有这样的路线:
GET /assets/*file controllers.Assets.at(path="/public", file)
当我在公共/图片/图片中添加一些图片/我想使用此网址http://localhost:9000/assets/images/pictures/test.jpg
它在服务器处于开发模式时有效,但在生产中我每次添加图像时都必须重新启动它...
我如何绕过它?
问候。
答案 0 :(得分:2)
Play的静态资源控制器将文件从类路径中拉出,不适合动态使用。如果您需要使用动态资产,那么您需要编写自己的控制器来处理这个问题。
答案 1 :(得分:1)
正如James所说,Play的静态资产控制器将文件从类路径中拉出来。您还可以定义应用程序之外的类路径。
您可以通过在Build文件中定义以下行来完成此操作。
val assetDir = sys.props.get("java.io.tmpdir").get + "/outside-cp"
val main = play.Project(appName, appVersion, appDependencies).settings(
unmanagedClasspath in Runtime += file(assetDir),
unmanagedClasspath in Compile += file(assetDir),
unmanagedClasspath in Test += file(assetDir)
)
现在创建以下目录:
/tmp/outside-cp/assets
最后,为您的外部资产创建一条路线:
GET /outside/*file controllers.Assets.at(path="/assets", file)
启动您的应用程序并将文件放在assets目录中。现在,您可以通过以下URL访问该文件:
http://localhost:9000/outside/your-placed.file
注意:您不能直接将资源目录用作类路径,因为Play的资产控制器会自动使用路径为给定文件添加前缀。并且定义空路径不起作用。
如果您运行play stage
打包应用程序,则必须更改启动脚本以将类路径添加到应用程序中。