从Play Framework 2 Scala 控制器提供静态文件的首选方法是什么?
该文件与我的应用程序捆绑在一起,因此无法对文件系统 absolute 进行硬编码/path/to/the/file
,因为它的位置取决于 Play 应用程序的安装位置。
该文件放在 public/ 目录中,但不在 app/assets/ 中,因为我不想让 Play 编译它。
(我不简单地向该文件添加路由的原因是,在访问该文件之前需要登录,否则它没有用。)
这是我到目前为止所做的,但这在我的生产服务器上中断了。
object Application ...
def viewAdminPage = Action ... {
... authorization ...
val adminPageFile = Play.getFile("/public/admin/index.html")
Ok.sendFile(adminPageFile, inline = true)
}
在我的routes
文件中,我有这一行:
GET /-/admin/ controllers.Application.viewAdminPage
问题是在我的生产服务器上,发生了这个错误:
FileNotFoundException: app1/public/admin/index.html
是否有其他方法而不是Play.getFile
andOK.sendFile
来指定要提供的文件?那在生产中永远不会中断?
(我的应用程序安装在/some-dir/app1/
,我从/some-dir/
(没有app1/
)启动它 - 如果我改为从 启动应用程序,也许一切都会工作/some-dir/app1/
。但我想知道一个“应该”如何从控制器内部提供静态文件?所以无论我碰巧从哪里启动应用程序,一切都在生产服务器上也能正常工作)