ellou' Player
我需要为小型应用程序目的提供类似CDN
的自定义解决方案,并想知道直接使用 Play 提供文件但不放在应用程序的public
目录下的最佳方式是什么?我需要访问FTP上传文件夹。
假设我的应用从/home/myaccount/playapps/app201
文件夹运行,并且可以在http://somedomain.tld
地址使用。我还有一个常见的FTP帐户,其文件夹指向/home/myaccount/ftp_upload
。
将文件/home/myaccount/ftp_upload/folder_1/sub_2/file.txt
作为 http://somedomain.tld/ftp_upload/folder_1/sub_2/file.txt
(没有任何检查和限制)?
- 一种选择是使用 HTTP 服务器并为
ftp folder
设置单独的host
或alias
,但我想避免在某些节点上使用额外的服务器(参考:如果您正在寻找服务器解决方案,请查看示例配置)。 - 其次是编写
Application.serve(String filepath)
操作 + 路由,但在提供文件之前我不需要任何其他操作。使用这种方法有意义吗?
还有其他选择吗?
(这个问题也可以在谷歌网上论坛上找到)
如果您的 Play 文件夹和 FTP 文件夹位于同一主机上,则可以使用公共资源。从文档中:
请注意,如果您在"公共"之外定义资产映射,则需要告诉SBT 关于它,例如,如果您愿意:
GET /assets/*file controllers.Assets.at("/public", file)
GET /liabilities/*file controllers.Assets.at("/foo", file)
您应该将其添加到project/Build.scala
中的项目设置
// Add your own project settings here
playAssetsDirectories <+= baseDirectory / "foo"
我没有测试它,但值得一试:-)