6

所以我研究并发现Play的Production模式在处理时的行为与assetsDevelopment模式中的行为不同。

我有一个用户上传图片的网站,上传后图片会立即显示在页面上。在开发模式下,图像显示正常。但是在生产模式下,找不到图像。我了解在生产模式下,代码无法识别写入的新文件。

有类似问题的用户写了一个解决方案,但它是在 Scala 中。我正在用 Java 编写,但不知道这个用户的解决方案在做什么:玩!框架:文件上传后直到播放干净才提供

似乎此解决方案将文件作为下载提供?因为如果是的话,那不是我需要的。我想访问文件以使用 html 显示它,如下所示:

<img src='@routes.Assets.at("images/fileName")'></img>

如何在Productionmode 下访问新上传的资产文件?

4

1 回答 1

3

因此,在 Play 编译代码后发现您无法提供新添加的文件,下一个最佳选择是使用许多人建议的前端 HTTP 服务器。我最终使用了 nginx。由于我只使用 nginx 来提供文件而不是其他任何东西,因此我将发布我为使其工作而采取的步骤。

我使用的是 Mac,所以我通过$ brew install wget在终端中调用来安装 Homebrew。Homebrew 很好,因为您只需调用即可安装 nginx$ brew install nginx

我使用这个网站来指导我如何修改 nginx 的配置文件: http: //learnaholic.me/2012/10/10/installing-nginx-in-mac-os-x-mountain-lion/

然后我只需修改配置文件

location / {
    root   html;
    index  index.html index.htm;
}

location / {
        root   /Users/myName/playProject/public;
    }

其中public指的是 Play 项目中的文件夹。我这样做是为了不必重新排列我的代码。所以现在而不是

<img src='@routes.Assets.at("images/fileName")'></img>

我用

<img src='http://localhost:8080/images/fileName'></img>

8080端口是我的nginx服务器

于 2013-08-14T16:32:56.780 回答