我一直在研究一个项目,我通过XMLHttpRequest(类型:blob)从互联网上下载一个zip文件,然后我尝试使用JSzip来阅读它的内容。每个zip都有一个json,我感兴趣的是说清单。 JSON。所以我成功地用这段代码阅读了它。
var read_zip = new JSZip();
res=xhr.response;
read_zip.loadAsync(xhr.response).then(function (zip) {
return zip.file("manifest.json").async("string");
}).then(function (text) {
obj = JSON.parse(text);
console.log(text);});
在此之后我对“obj”进行了一些更改,现在我想用这个修改过的“obj”替换现有的清单。 json内容并保存。 我正在尝试这段代码
var write_zip = new JSZip();
write_zip.loadAsync(xhr.response).then(function (zip) {
zip.file("manifest.json" , obj) ;
zip.generateAsync({type:"blob"})
.then(function (blob) {
saveAs(blob, "hello.zip");
});});
但我收到此错误
Uncaught (in promise) Error: Can't read the data of 'manifest.json'.
Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc)
?
抱歉,我是新手。
答案 0 :(得分:0)
看起来您正试图将对象写入zip,但不支持。根据JsZip上的文档,要写入的值必须是类型:
String / ArrayBuffer / Uint8Array / Buffer / Blob / Promise / Nodejs stream