这似乎应该非常简单,但我无法弄清楚。我需要从我的应用程序服务器端的/ public文件夹中获取文件。我可以使用javascript或html获取它们没有问题。我正在使用Java,玩2.2.1
我试过搞乱这个
Assets.at("/public", "images/someImage.png");
但我不确定如何将该Action对象转换为File对象。
答案 0 :(得分:2)
公众'文件夹可能在部署环境中不存在(使用$ activator stage
),因为资产被打包到位于target/universal/stage/lib/<PROJECT_NAME>-assets.jar
的.jar文件中。
因此,将java.io.File实例添加到该位置是不可能的AFAIK。
然而,这是我想要读取文件的字节(并将它们转换为字符串 - 这就是我需要的东西):
SomeController.java
private String getSomeFile() throws IOException {
InputStream in = null;
ByteArrayOutputStream out = null;
try {
in = Play.application().resourceAsStream("public/some/file.txt");
out = new ByteArrayOutputStream();
int len;
byte[] buffer = new byte[1024 * 16];
while ((len = in.read(buffer)) >= 0) {
out.write(buffer, 0, len);
}
return new String(out.toByteArray(), "utf-8");
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) { /* ignore */ }
}
if (out != null) {
try {
out.close();
} catch (IOException e) { /* ignore */ }
}
}
}
注意:我使用的是Play 2.3.7。我不确定这是否适用于2.2.1。
希望这有助于任何人。
答案 1 :(得分:-1)
Play.application().getFile
将加载相对于当前应用程序路径的文件。
所以:
Play.application().getFile("public/images/someImage.png");