我正在为客户创建一个Java Applet,我遇到了一个需要读取/写入其Web服务器上的文件的问题,但该文件在任何情况下都不能公开访问。
Java Applet和文件都在同一台服务器上,如果需要,我可以将文件和.jar文件放在同一个文件夹中,但我尝试了几种不同的配置,包括将它们放在同一个文件夹中并使用
访问该文件test = WorkbookFactory.create(new File("test.xlsx"))
我已经尝试写出文件的完整路径,似乎没有任何工作。
我得到的错误是:
Caused by: java.security.AccessControlException: access denied ("java.io.FilePermission" "test.xlsx" "read")
在同一台服务器上读取/写入文件的最佳方式是什么,这是不能公开看到的?
答案 0 :(得分:1)
您似乎对Java applet的工作方式存在根本性的误解。它们不在服务器上运行,而是在Web浏览器中在客户端上运行。如果客户端的Web浏览器无权访问该文件,则该applet也无法访问该文件。
答案 1 :(得分:0)
Applet无法在服务器上读取或写入文件,因为Java代码在客户端上运行 - 即在Web浏览器本身中运行。实现您正在寻找的内容的最佳方法是创建一个写入文件的 servlet (或其他服务器端代码模块),并强制执行某种安全性。然后,applet可以与该servlet通信,并以您喜欢的任何方式保护对该文件的访问。例如,嵌入applet的页面可能包含生成的唯一键,applet将使用该键访问servlet。