生产环境play framework 2.3.6中的相对路径

Relative path in play framework 2.3.6 in production environment

在 play framework 2.3.6 中,我可以在本地使用 public static String projectPath = Play.application().path().getPath(); 获取项目的相对路径,并存储或检索存储在 public 文件夹中的文件。但是在生产环境中工作时,相对路径显示为 target/universal/stage/bin/<project-name>。现在,我无法上传文件或获取 public 文件夹中的文件。任何想法将不胜感激。

答案很简单。你不能:)

Play 是一个无状态的框架,将文件存储到文件系统是违背其理念的。所以你在 PROD 中没有文件系统。

您必须将它们存储到数据库或任何其他存储中。

但是您可以通过以下方式访问 /public 文件夹中的文件:

play.Play.application().resourceAsStream("/public/someFile.gif");

我创建了一个静态方法并检查播放是否在生产中 运行。如果是,return 绝对路径,否则 return 相对路径。所有需要路径的类都会调用这个方法。