【问题标题】:Play! Framework: Assets not accessible in Production Mode玩!框架:在生产模式下无法访问资产
【发布时间】:2013-08-14 07:57:48
【问题描述】:

所以我研究并发现 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模式下我可以怎么访问新上传的资产文件?

【问题讨论】:

标签: playframework playframework-2.1


【解决方案1】:

因此,在 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服务器

【讨论】:

    猜你喜欢
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多