首页 文章

使用Web应用程序打包applet以访问loca文件系统的步骤

提问于
浏览
1

我需要使用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 回答

  • 2

    如果JS调用了一个受信任的applet,它通常会变成沙盒 . 为了解决这个问题,请查看将调用包装在_2402685中 .

相关问题