打包应用程序时,应用程序的所有资产(包括所有子项目)都会聚合到target / my-first-app-1.0.0-assets.jar中的单个jar中。此jar包含在发行版中,以便您的Play应用程序可以为它们提供服务。此jar还可用于将资产部署到CDN或反向代理。
我在我的应用程序中上传了一些图像,一切都在开发中运行良好但在生产中它给我带来了错误。
问题是,我需要public / images文件夹中的那些文件才能在页面上显示它们,但它在生产中不起作用。
如何让用户上传图片并将其提供给/ public / images?
我是否必须创建另一个资产路径或类似的东西?
注意:没有发布代码,因为它只是文档中的标准上传方法。
答案 0 :(得分:0)
我做了什么:
我意识到这可能只是一个愚蠢的解决方法。
GET /images/:name controllers.ImageController.show(name: String)
我创建了一个简单的动作,用于提供如下图像:
def show(name: String) = Action { implicit r =>
val rootPath = Play.application.path
val path = FileSystems.getDefault().getPath("/" + rootPath + "/public/images/");
Logger.info("serving image: " + path.toString + "/" + name )
Ok.sendFile(new java.io.File(path.toString + "/" + name))
}
基本上这整个操作在开发中会失败,但它可以在生产中使用。
部署后,我手动创建了文件夹,例如
your_root/target/universal/stage/public/images
现在可以在以下网址找到所有图片:
/images/name_of_the_image
注意:播放版本= 2.4.x