java - 将小程序与Web应用程序打包以访问本地文件系统的步骤

标签 java web-applications applet

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

以下是我已完成的步骤:

第 1 步:

  1. 创建了一个小程序来创建 zip 和文件,并使用 uploadFolder 方法调用上传 servlet。
  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));
    

第 2 步:

此后,我浏览了一些论坛,并决定选择 JWS 和 JNLP。在步骤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;
    }
}

任何人都可以建议我,更好的方法来访问本地文件系统并纠正我,如果我做错了什么?

最佳答案

如果一个受信任的小程序被 JS 调用,它通常会被沙箱化。为了解决这个问题,请尝试将调用包装在 PrivilegedAction 中。 .

关于java - 将小程序与Web应用程序打包以访问本地文件系统的步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15335957/

相关文章:

java - 寻找避免小程序重新加载的可能策略

java - 锁定具有非透明 Activity 的 Android API 27 时的屏幕方向

django - Django 和 React 的部署和开发环境

java - GWT URL 路由和其他功能

spring - 我如何获得所有登录用户的列表(通过 Spring Security)我的 Web 应用程序

sharepoint - WebEx WebOffice的开源替代品?

java - Applet 可以打开新的 HTML 窗口*并*绕过弹出窗口阻止程序吗?

java - 如何部署java小程序进行本地开发

Java Swing JLabel.setIcon() 没有按我期望的方式工作

java - 无法抓取我正在寻找的数据?