Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Playframework 玩框架:在生产模式下无法访问资产_Playframework_Playframework 2.1 - Fatal编程技术网

Playframework 玩框架:在生产模式下无法访问资产

Playframework 玩框架:在生产模式下无法访问资产,playframework,playframework-2.1,Playframework,Playframework 2.1,因此,我研究发现,Play的生产模式在处理资产时的行为与开发模式不同 我有一个网站,用户上传一张图片,上传后图片会立即显示在页面上。在显影模式下,图像显示良好。但在生产模式下,找不到图像。我知道在生产模式下,代码无法识别新编写的文件 一个有类似问题的用户编写了一个解决方案,但它是在Scala中。我用Java编写,不知道该用户的解决方案在做什么: 似乎此解决方案将文件作为下载服务?因为如果是的话,那不是我需要的。我想访问该文件以使用html显示它,如下所示: <img src='@route

因此,我研究发现,Play的
生产
模式在处理
资产
时的行为与
开发
模式不同

我有一个网站,用户上传一张图片,上传后图片会立即显示在页面上。在显影模式下,图像显示良好。但在生产模式下,找不到图像。我知道在生产模式下,代码无法识别新编写的文件

一个有类似问题的用户编写了一个解决方案,但它是在Scala中。我用Java编写,不知道该用户的解决方案在做什么:

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

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


生产
模式下,如何访问新上传的资产文件?

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

我正在使用Mac,因此我通过在终端中调用
$brew install wget
安装了Homebrew。Homebrew很好,因为只需调用
$brew install nginx

我使用此网站指导我如何修改nginx的配置文件:

然后,我只需从中修改配置文件

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

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

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

我用

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


其中端口8080是我的nginx服务器

请参阅此讨论:谢谢您的链接。我做了很多研究,没有发现这一点。James Roper的回复大致概括了资产控制员的局限性。
<img src='http://localhost:8080/images/fileName'></img>