cYn*_*cYn 6 playframework playframework-2.1
所以我研究并发现Play的Production模式在处理时的行为与assets在Development模式下的行为不同.
我有一个用户上传图片的网站,上传后图片会立即显示在页面上.在开发模式下,图像显示正常.但在生产模式下,无法找到图像.据我所知,在生产模式下,代码无法识别写入的新文件.
具有类似问题的用户编写了解决方案,但它位于Scala中.我用Java编写,并不确切知道该用户的解决方案在做什么:玩!框架:上传后文件没有提供,直到播放干净
似乎这个解决方案是作为下载提供文件?因为如果是的话,那不是我需要的.我想访问该文件以使用html显示它,如下所示:
<img src='@routes.Assets.at("images/fileName")'></img>
Run Code Online (Sandbox Code Playgroud)
如何在Production模式下访问新上传的资产文件?
因此,当发现 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;
}
Run Code Online (Sandbox Code Playgroud)
到
location / {
root /Users/myName/playProject/public;
}
Run Code Online (Sandbox Code Playgroud)
其中public指的是 Play 项目中的文件夹。我这样做是为了不必重新排列我的代码。所以现在代替
<img src='@routes.Assets.at("images/fileName")'></img>
Run Code Online (Sandbox Code Playgroud)
我用
<img src='http://localhost:8080/images/fileName'></img>
Run Code Online (Sandbox Code Playgroud)
其中端口 8080 是我的 nginx 服务器