玩!上传图片并在/ assets / images

时间:2016-05-07 14:51:45

标签: playframework playframework-2.0

From the docs

  

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

我在我的应用程序中上传了一些图像,一切都在开发中运行良好但在生产中它给我带来了错误。

问题是,我需要public / images文件夹中的那些文件才能在页面上显示它们,但它在生产中不起作用。

如何让用户上传图片并将其提供给/ public / images?

我是否必须创建另一个资产路径或类似的东西?

注意:没有发布代码,因为它只是文档中的标准上传方法。

1 个答案:

答案 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