访问被拒绝来自java servlet的资源文件

时间:2009-08-09 13:24:09

标签: google-app-engine servlets access-denied

我正在尝试从servlet访问资源文件但是获取 HTTP错误500 - 访问被拒绝

File file = new File("//warChildFolder//myFile.txt");
InputStream is = new FileInputStream(file); // <--error on this line

我在google-app-engine上。

任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:3)

Google App Engine文档谈论“白名单”文件。这是在玩吗?

我也很想知道这个:

File file = new File("//warChildFolder//myFile.txt");

前导斜线不能使它成为绝对路径吗?

我会这样试试:

File file = new File("WEB-INF/warChildFolder/myFile.txt");

制作相对于WAR根目录的路径,并明确说明WEB-INF。

答案 1 :(得分:3)

我不确定Google App Engine,但根据我的经验,跨容器和平台的唯一解决方案是使用ServletContext.getRealPath()。

new File(servletContext.getRealPath("/WEB-INF/warChildFolder/myFile.txt"));

规范说:使用正斜杠和一个前导斜杠。这为您提供了平台独立性,并且您不依赖于进程的当前目录。

答案 2 :(得分:1)

如果使用单路径分隔符,它是否有效?

(更新为使用相对路径):

File file = new File("warChildFolder/myFile.txt");

你需要转义字符串中的“\”字符,所以使用“\”,但只需要一个“/”。

更新:可能是正在处理的路径与您预期的路径不同,您可以尝试记录文件的绝对路径(使用file.getAbsolutePath())来检查它。

要检查的另一件事是该进程对文件夹/文件具有读取权限。如果你不在Windows上,这可能是一个问题。

相关问题