玩!框架:生产模式下无法访问的资产

时间:2013-08-12 20:59:50

标签: playframework playframework-2.1

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

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

具有类似问题的用户编写了一个解决方案,但它位于Scala中。我用Java编写,并不确切知道该用户的解决方案在做什么:Play! Framework: File not served after upload until play clean

好像这个解决方案正在下载文件?因为如果是的话,那不是我需要的。我想访问该文件以使用html显示它:

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

如何在Production模式下访问新上传的资源文件?

1 个答案:

答案 0 :(得分:2)

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

我正在使用Mac,所以我通过在终端中调用$ brew install wget来安装Homebrew。 Homebrew很好,因为你可以通过简单地调用$ brew install nginx

来安装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服务器