如何使用 JSzip 替换 zip 文件的内容?
How to replace contents of file in a zip using JSzip?
我一直在做一个项目,我通过 XMLHttpRequest(类型:blob)从互联网上下载了一个 zip 文件,然后我尝试使用 JSzip.So 读取它的内容,每个 zip 都有一个 json我感兴趣的是 manifest.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)
?
抱歉,我是新手。
您似乎在尝试将对象写入不受支持的 zip。根据 JsZip 上的文档,要写入的值需要为以下类型:
String/ArrayBuffer/Uint8Array/Buffer/Blob/Promise/Nodejs 流
我一直在做一个项目,我通过 XMLHttpRequest(类型:blob)从互联网上下载了一个 zip 文件,然后我尝试使用 JSzip.So 读取它的内容,每个 zip 都有一个 json我感兴趣的是 manifest.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)
?
抱歉,我是新手。
您似乎在尝试将对象写入不受支持的 zip。根据 JsZip 上的文档,要写入的值需要为以下类型:
String/ArrayBuffer/Uint8Array/Buffer/Blob/Promise/Nodejs 流