这看起来应该非常容易,但我想不通。我需要从应用程序服务器端的/public 文件夹中获取文件。我可以毫无问题地使用 javascript 或 html 获取它们。我用的是Java,玩2.2.1
我试过把这个弄乱
Assets.at("/public", "images/someImage.png");
但我不确定如何将该 Action 对象转换为 File 对象。
请您参考如下方法:
'public' 文件夹可能不会存在于部署环境中的文件系统中(使用 $ activator stage
),因为 Assets 被打包到位于 target/universal/stage/lib/<PROJECT_NAME>-assets.jar
的 .jar 文件中.
因此,据我所知,不可能将 java.io.File 实例获取到该位置。
但是,这是我想出的读取文件字节的方法(并将它们转换为字符串 - 这正是我需要的):
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。
希望这对任何人都有帮助。