我需要使用Applet支持文件夹上传 . 我已经实现了将尝试获取用户主目录的applet,并将尝试为该文件夹创建一个临时zip文件,然后它将命中我的上传servlet . 实际上,通过从JavaScript调用applet方法uploadFolder之一来启动zip文件和上传的创建 . 当我在创建用户主目录中的zip文件时,出现了java.security.AccessControlException:访问被拒绝(java.io.FilePermission中的C:\ Documents和Settings \ userhomedir \ temp_timestamp.zip写) .
Following are steps I have done:
Step 1:
-
创建了一个applet,用于创建zip和文件以及uploadFolder方法命中上传servlet .
-
为该applet项目创建了一个已签名的jar .
-
html代码是
<Applet code="com.project.upload.FolderUploadApplet.class" name="uploadApp"
archive="upload.jar"
width="250" height="80" >
</applet>
- JavaScript代码是
window.alert(uploadApp.uploadFolder(destionationPath));
Step 2:
在此之后,我经历了一些论坛,并决定与JNLP一起去JWS . 在第一步,我能够调用使用JavaScript小应用程序的方法,但在我与JNLP做什么,我是不是能够通过JavaScript调用我的小应用程序的方法 . 请查找以下代码段:
Html
<Applet code="com.altair.cm.upload.FolderUploadApplet.class" id="xyz" archive="scmfu.jar">
<param name="jnlp_href" value="folderupload.jnlp">
</applet>
JavaScript
var app = document.getElementById("xyz");
window.alert(app.uploadFolder(destionationPath));
folderupload.jnlp
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="">
<information>
<title>Folder Upload</title>
<vendor>Team</vendor>
</information>
<security>
<all-permissions/>
</security>
<resources>
<!-- Application Resources -->
<j2se version="1.6+"
href="http://java.sun.com/products/autodl/j2se"
<!-- secure java vm argument -->
java-vm-args="-Xmx1024M"/>
<jar href="scmfu.jar"
main="true" />
<!-- secure properties -->
<property name="sun.java2d.noddraw"
value="true"/>
<property name="jnlp.myProperty"
value="a user-defined property"/>
</resources>
<applet-desc
name="uploadApp"
main-class="com.altair.cm.upload.FolderUploadApplet.class"
width="600"
height="200">
</applet-desc>
<update check="background"/>
</jnlp>
Applet Code :
public class FolderUploadApplet extends JApplet {
public String uploadFolder(String destinationPath){
String fileName = UploadUtil.getInstance().processZipAndUpload(destinationPath,file.getPath());
return fileName;
}
}
任何人都可以建议我,更好的方式来访问本地文件系统并纠正我,如果我做错了什么?
1 回答
如果JS调用了一个受信任的applet,它通常会变成沙盒 . 为了解决这个问题,请查看将调用包装在_2402685中 .