【问题标题】:Java applet can't access non-public file on same webserverJava 小程序无法访问同一网络服务器上的非公共文件
【发布时间】:2012-07-12 01:39:44
【问题描述】:

我正在为客户创建一个 Java 小程序,我遇到了一个问题,我需要在他们的 Web 服务器上读取/写入文件,但该文件在任何情况下都不能公开访问.

Java Applet 和文件都在同一个服务器上,如果需要,我可以将文件和 .jar 文件放在同一个文件夹中,但我尝试了几种不同的配置,包括将它们放在同一个文件夹中并使用

访问文件
test = WorkbookFactory.create(new File("test.xlsx"))

我已经尝试写出文件的完整路径,但似乎没有任何效果。

我得到的错误是:

Caused by: java.security.AccessControlException: access denied ("java.io.FilePermission" "test.xlsx" "read")

在同一服务器上读取/写入文件的最佳方式是什么,但不能公开查看?

【问题讨论】:

    标签: java applet webserver file-access


    【解决方案1】:

    您似乎对 Java 小程序的工作方式存在根本性的误解。它们不在服务器上运行,而是在客户端、Web 浏览器中运行。如果客户端的网络浏览器无权访问该文件,则小程序也无权访问。

    【讨论】:

    • 我猜这就是正在发生的事情。我将不得不寻找另一种方式来做他们想做的事。谢谢!
    【解决方案2】:

    Applet 无法在服务器上读取或写入文件,因为 Java 代码在 客户端 上运行 - 即在 Web 浏览器本身中。实现您正在寻找的内容的最佳方法是创建一个 servlet(或其他服务器端代码模块)来写入文件并强制执行某种安全性。然后,applet 可以与该 servlet 对话,并以您喜欢的任何方式保护对文件的访问。例如,嵌入小程序的页面可能包含生成的唯一密钥,小程序将使用该密钥访问 servlet。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      相关资源
      最近更新 更多