GWT文件上传java.security.AccessControlException:访问被拒绝(java.io.FilePermission

时间:2011-03-08 12:57:57

标签: gwt file-upload permission-denied

我有一个文件上传Servlet并尝试将一些文件存储为:

try{
    File uploadedFile = new File(UPLOAD_DIRECTORY + fileName);
    File uploadedFile = new File("/"+fileName);
    item.write(uploadedFile);
}
catch (Exception e) {
    e.printStackTrace();
}

之后我收到以下错误:

java.security.AccessControlException: access denied (java.io.FilePermission /untitled.html write)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)

我该如何解决?

1 个答案:

答案 0 :(得分:2)

您可以让您的应用服务器/可写(这对我来说似乎不是一个好主意)或将您上传的文件存储在另一个可写位置。

File uploadedFile = new File(UPLOAD_DIRECTORY + fileName);
File uploadedFile = new File("/"+fileName);

您似乎也试图两次声明uploadedFile。从错误中看,UPLOAD_DIRECTORY似乎是/,或者您实际上正在使用第二行。也许您只需要在UPLOAD_DIRECTORY中提供正确的位置?

回答有关Java政策文件的评论问题:

来自java.sun.com上的Security and Permissions

  

Java有一个策略文件   平台安装(系统)和   每个用户的可选策略文件。   系统策略文件位于   {java.home} /lib/security/java.policy,   并且每个用户策略文件都在其中   用户的主目录。系统和   用户策略文件组合在一起。因此对于   例如,可能存在系统策略   授予权限很少的文件   对系统上的所有用户,以及   个别政策文件授予   对某些人的额外权限   用户。

有关在策略文件中设置文件系统权限的信息,请参阅File Permission部分。

重申我自己的评论,你还要注意操作系统中的文件系统权限,其控制权取决于你正在使用的操作系统。