代码之家  ›  专栏  ›  技术社区  ›  JohnIdol

拒绝从javaservlet访问资源文件

  •  1
  • JohnIdol  · 技术社区  · 16 年前

    :

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

    任何帮助感谢!

    3 回复  |  直到 16 年前
        1
  •  3
  •   duffymo    16 年前

    谷歌应用引擎文档讨论了“白名单”文件。这是在玩吗?

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

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

        2
  •  3
  •   sigget    16 年前

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

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

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

        3
  •  1
  •   Rich Seller    16 年前

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

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

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

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