2

是否可以从 Javascript 读取清单文件内容。要求是上传一个jar文件,读取manifest文件内容,然后在浏览器(客户端)根据manifest文件显示不同的字段,然后将数据发送到服务器。

4

2 回答 2

0

这是一个基本示例,在 chrome 中进行了测试。我从未见过 JAR 清单,但下面的简单代码适用于我发现浮动的演示 JAR 文件。

无论如何,这部分并不棘手,撕开 zip 并抓取文件,这是一种方法:

<html>
<form><input type=file></form>
<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>

    function getManifest(e){

    var file=e.target.files[0];        
    var reader = new FileReader();

    reader.onload = function(e) {
       var zip = new JSZip(e.target.result);
       var manifest = zip.files['META-INF/MANIFEST.MF']
           .data
           .trim()
           .split(/\s*\n+\s*/)
           .map(function(a,r){
                   r=a.split(/\s*:\s*/); 
                   this[r[0]] = r[1]; 
                   return this;
           },{})[0];

       alert(JSON.stringify(manifest, null, "\t"));

    };

     reader.readAsArrayBuffer(file);
}

document.forms[0].elements[0].onchange=getManifest;

</script>
</html>

当然,您会希望将文件输入换成二进制 ajax 调用,但是在一段代码中演示这种交互几乎是不可能的,比如文件输入允许...

这很容易,感谢jszip。关于这一点:有关一般信息,请参阅http://stuk.github.io/jszip/ ,有关二进制 ajax 演示,请参阅http://stuk.github.io/jszip/examples/get-binary-files-xhr2.html 。

于 2013-06-19T02:33:39.023 回答
0

假设您谈论 Java 服务器应用程序:

不,这是不可能的。

您需要以某种方式从清单中公开信息,例如通过 REST API。参见 [RestEasy|http://www.jboss.org/resteasy]。

然后通读一遍XmlHttpRequest

PS:暴露 META-INF 或 WEB-INF 中的任何内容都不是一个好主意——这是一个安全风险。

于 2013-06-19T03:57:11.303 回答