如何读取xlet.属性使用JSZip形成一个jar文件

How to read the xlet.properties form a jar file using JSZip?

本文关键字:一个 文件 jar JSZip 何读取 读取 xlet 属性      更新时间:2023-09-26

这是我的整个jarupload.jsp文件(我得到错误读取yelp_embedded_10.r4798-iot.jar: JSZip未定义)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
<%@ taglib prefix='form' uri='http://www.springframework.org/tags/form'%>
<html>
<head>
<script src="/jp/resources/js/jquery-1.9.1.js"></script>
<script src="/jp/resources/js/jquery-ui-1.10.1.custom.min.js"></script>
<script src="/jp/resources/js/jquery-migrate-1.1.1.js"></script>
<script src="/jp/resources/js/jquery.xdomain.js" type="text/javascript"></script>
<script src="http://stuk.github.io/jszip/jszip.js"></script>
<script src="http://stuk.github.io/jszip/jszip-load.js"></script>
<script src="http://stuk.github.io/jszip/jszip-inflate.js"></script>
<!-- <script src="/contentstocking/resources/login.jsp" ></script> -->
<script src="http://malsup.github.com/jquery.form.js"></script> 
<script src="/jp/resources/js/jquery.xdomain.js" type="text/javascript"></script>
<script type="text/javascript">
window.SESSION_COOKIE_NAME = 'ID';      
</script>

<script type="text/javascript">  
var iframeContents=" ";
var filesize;
var jarversion;
var jarname;
function strip(jsonresponse)
{
    var tmp = document.createElement("DIV");
    tmp.innerHTML = jsonresponse;
    return tmp.textContent || tmp.innerText || "";
}
$(document).ready(function () 
        {          
    $("#jarsubmit").click(function ()
{            
        if ("" == document.forms.TestForm.myFile.value) {
            alert("Please select the file.");
            return false;
        }
        else{
        var iframe = $('<iframe name="postiframe" id="postiframe" style="display: none" />');     
                $("body").append(iframe);
                var form = $('#TestForm');      
                form.attr("action", "/contentstocking/content/save_uploaded_file");          
                form.attr("method", "post");     
                form.attr("enctype", "multipart/form-data");      
                form.attr("encoding", "multipart/form-data");   
                form.attr("target", "postiframe");          
                form.attr("file", $('#myFile').val());    
                form.submit();   
                findsize();
                $("#postiframe").load(function () 
                {                
                    iframeContents = $("#postiframe")[0].contentWindow.document.body.innerHTML;
                    alert("alert for iframecontents:: "+iframeContents);
                    var jsonObject = strip(iframeContents);
                    if(jsonObject.indexOf("string") != -1){
                        var result = $.parseJSON(jsonObject);
                        window.close(); 
                    }else{
                        $("#jsontext").val(iframeContents);
                        if($("#jsontext").val()!=null){
                            alert("Inside if jsontext is not null...");
                            window.open('updateJar.jsp?size='+filesize+'&'+'version='+jarversion+'&'+'name='+jarname);
                            //window.close();
                        }
                    }
                });   
                return false; 
        }
            });   
    });  


$(function () { 
    if (!window.FileReader || !window.ArrayBuffer || !window.FileList || !window.Blob) {
      alert("Browser version doen't support this functionality ");
      return;
    }
 var $result = $("#result");
    $("#myFile").on("change", function(evt) {
        alert("Inside onchange...");
      $result.html("");   
      var files = evt.target.files;
      for (var i = 0, f; f = files[i]; i++) {
       var reader = new FileReader();
       // Closure to capture the file information.
        reader.onload = (function(theFile) {
          return function(e) {
            var $ul = $("<ul>");
            alert("Before Try block");
            try {  
                alert("Inside try block");          
              var zip = new JSZip(e.target.result);
              $.each(zip.files, function (index, zipEntry) {
                if(zipEntry.name == 'xlet.properties'){
                    var $title = $("<h3>", {
                          text : zipEntry.name
                        });
                        $result.append($title);
                    var fileData = JSON.stringify(zip.file("xlet.properties").asText());
                    fileData = fileData.substring(1,fileData.length -1);
                    $('#jsonvalue').val(fileData);
                    var fileDataArray = fileData.split('''n');
                    for(var i=0; i< fileDataArray.length; i++){
                        if("" != fileDataArray[i]){
                            var mystring = fileDataArray[i];
                            var ind = mystring.indexOf("''r");
                            if(ind!=-1){
                                fileDataArray[i] = mystring.substring(0, ind);
                            } 
                            if(fileDataArray[i].length != 0){
                                $ul.append("<li>" + fileDataArray[i] + "</li>");
                            }
                            var jarNamesplit = fileDataArray[1].split('=');
                            var jarVersionsplit = fileDataArray[5].split('=');
                            jarname = jarNamesplit[1];
                            jarversion = jarVersionsplit[1];
                            $('#jarName').val(jarNamesplit[1]);
                            $('#jarVersion').val(jarVersionsplit[1]);                                                       
                        }
                    }                    
                }
              });

            } catch(e) {
              $ul.append("<li class='error'>Error reading " + theFile.name + " : " + e.message + "</li>");
            }
            $result.append($ul);
          }
        })(f);
        // read the file !
        reader.readAsArrayBuffer(f);
      }
    });
  }); 

function findsize() {
        if (($("#myFile"))[0].files.length > 0) {
        filesize = ($("#myFile"))[0].files[0].size;
        $('#jarSize').val(filesize);


    } 
else {
        // no file chosen!
        alert("File is empty");
    }
}
    </script>  

<title>Example</title>
    <%
    String status = null;
    int sessionTime = 0; 
    if(request.getSession() != null){
        status = (String) request.getSession().getAttribute("loginStatus");
        if(status == null){
            response.sendRedirect(request.getContextPath());
        }  
    }
    else{
        response.sendRedirect(request.getContextPath());
    } 
    %>
</head>
<body>
    <form id="TestForm" >

    Choose a file to upload to the server:
        <input type="file" id="myFile" name="myFile" />
        <br />
        <div id="result"></div>
        <p>
            <input type="button" value="Submit"  id="jarsubmit"/>
<!--            <input type="text" id="jarName"/>
            <input type="text" id="jarSize"/>
            <input type="text" id="jarVersion"/> -->
            <!-- <input type="text" id="jsonvalue" /> -->
        </p>
    </form>
 <input type="text" id="jsontext" />        
</body>
</html>

我需要显示xlet。属性详细信息在浏览按钮下面的div标记中。然后把它传到下一页但是问题是它没有读取xlet.properties.它显示::读取jarname.jar: JSZip在mozilla和chrome(版本28.0.1500.95 m)中都没有定义

来自以下几行:

<script src="http://stuk.github.io/jszip/jszip.js"></script>
<script src="http://stuk.github.io/jszip/jszip-load.js"></script>
<script src="http://stuk.github.io/jszip/jszip-inflate.js"></script>

这些url现在返回一个404页面。使用没有任何版本指示的远程文件是一个坏主意:JSZip中的任何破坏性更改(或者像这里的脚本的新位置)都可能在没有警告的情况下破坏您的代码。您应该下载自己的版本,或者使用提供特定版本JSZip的CDN,如下所示:

<script src="http://cdnjs.cloudflare.com/ajax/libs/jszip/2.3.0/jszip.js"></script>

最新版本包含加载/充气/放气代码,一个文件就足够了