有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我需要支持使用小程序上传文件夹。我已经实现了一个小程序,它将尝试获取一个用户主目录,并尝试为该文件夹创建一个临时zip文件,然后它将点击我的上传servlet。实际上,zip文件的创建和上传将通过从JavaScript调用其中一个小程序方法uploadFolder来启动。当我在用户主目录中创建zip文件时,我得到了一个java。安全AccessControlException:拒绝访问(java.io.FilePermission C:\Documents and Settings\userhomedir\temp_timestamp.zip write)

以下是我已经完成的步骤:

第一步:

  1. 创建了一个小程序来创建zip和文件,并与uploadFolder方法一起使用UploadServlet
  2. 为小程序项目创建了一个签名jar
  3. html代码是

    <Applet code="com.project.upload.FolderUploadApplet.class" name="uploadApp"
        archive="upload.jar"
        width="250" height="80" >
    </applet>
    
  4. JavaScript代码是

    window.alert(uploadApp.uploadFolder(destionationPath));
    

第二步:

在此之后,我浏览了一些论坛,并决定与JNLP一起使用JWS。在步骤1中,我能够使用JavaScript调用applet方法,但在使用JNLP时,我无法通过JavaScript调用applet方法。请查找以下代码片段:

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) 个答案

  1. # 1 楼答案

    如果一个受信任的小程序被JS调用,它通常会变成沙盒。要绕过这个问题,请将调用包装为^{}