是否可以从Javascript读取清单文件内容。要求是上传jar文件,读取清单文件内容,然后根据浏览器(客户端)中的清单文件显示不同的字段,然后将数据发送到服务器。
答案 0 :(得分:0)
这是一个基本的例子,用chrome测试过。 我从来没有见过JAR清单,但下面的简单代码适用于我发现漂浮的演示JAR文件。
无论如何,这部分并不棘手,翻开拉链并抓住文件,这是一种方式:
<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/获取一般信息,并http://stuk.github.io/jszip/examples/get-binary-files-xhr2.html查看二进制ajax演示。
答案 1 :(得分:0)
假设您谈论Java服务器应用程序:
不,这是不可能的。
您需要以某种方式从清单中公开信息,例如通过REST API。见[RestEasy | http://www.jboss.org/resteasy]。
然后通过XmlHttpRequest
阅读。
PS:在META-INF或WEB-INF中公开任何内容都不是一个好主意 - 这是一个安全风险。