Play框架:尽管尝试了“路线+自定义操作”解决方案

时间:2017-11-07 11:06:39

标签: java playframework angular2-routing assets production-environment

我们有一个Web应用程序,包括Angular2中的客户端和Play Framework 2.6中的服务器。此应用程序应允许用户上传自己的图像。与此处的许多用户类似,我们遇到了无法在生产模式下访问public/assets中的图像的问题,因此我们尝试了向这些用户提供的解决方案,但没有成功。

我们在conf/routes文件中创建了以下路线:

GET         /files/*file                                    controllers.AdminExerciseCtrl.serve(file)

导致以下自定义操作:

public Result serve(String file) {

    Boolean DEVELOPMENT = Boolean.parseBoolean(ConfigFactory.load().getString("development"));
    String path;

    if(DEVELOPMENT) path = "public/";             
    else path = ConfigFactory.load().getString("root/");

    return ok(new java.io.File(path + file));
}

即,我们将上传的图片保存到root/files/images

我们尝试了两种方式访问​​此路线:

  1. 由于@ character
  2. ,使用@routes会引发错误
  3. 使用src字段中的路由(其中resource.resourcePath是保存图像文件路径的变量,例如images/pic.jpg),找不到路径(404 )。
    <img *ngIf="resource" class="thumbnail" [src]="'/files/' + resource.resourcePath">
  4. 我们开始绝望,因为这个项目相当大,上传图片是一个核心功能。我们可能遗失的任何想法?我们应该在客户端做什么关于路线的事情?

    提前致谢。

0 个答案:

没有答案