嗨,我有一个applet,它根据CSV文件中的一些调查数据创建一个图表。我希望Applet也能生成图形的png文件。这在我的计算机上测试时有效,但是当托管在网上时,我会得到以下安全错误
java.security.AccessControlException: access denied
("java.io.FilePermission" "detail.png" "delete")detail.png是我要创建的png文件的名称。
下面是在我的applet中创建文件的代码。
public void imgPaint(){
done=1;
setSize(800,500);
BufferedImage bi = new BufferedImage(this.getSize().width, this.getSize().height, BufferedImage.TYPE_INT_ARGB);
g2 = bi.createGraphics();
paint(g2);
try{ImageIO.write(bi,"png",new File("detail.png"));}catch (Exception e) {e.printStackTrace();}
}因此,当applet调用JPanel时,它将转到file方法,绘制到屏幕,然后调用该方法再次绘制到png文件。无论如何,问题似乎不是代码,而是Java不允许我创建一个png文件。它应该转到程序所在的服务器上的文件。
我真的对Java安全一无所知,所以你们能提供的任何帮助都是很棒的。
发布于 2013-08-13 17:06:21
它应该转到程序所在的服务器上的文件。
为了服务器的安全,客户端(applet或其他)不能在服务器上创建File。您可以提供一个特定的上传工具(例如,基于FTP的),然后applet可以利用它。
实际上,该代码将试图在用户的本地文件系统上创建一个File。
https://stackoverflow.com/questions/18213795
复制相似问题