我正在尝试下载几个图像文件,并使用JavaScript和JSZip将其存储到单个zip文件中。但这将返回一个空的zip文件。我究竟做错了什么?我正在使用JSZip和JSZip-Utils

function createZip() {

//Create zip file object
var zip = new JSZip();

//Add folders

//Add files
JSZipUtils.getBinaryContent("icons/8_Bit_Character.png", function (err, data) {
   if(err) {
      throw err; // or handle the error
   }
   zip.file("picture.png", data, {binary:true});
});

JSZipUtils.getBinaryContent("icons/16_Bit_Character.png", function (err, data) {
   if(err) {
      throw err; // or handle the error
   }
   zip.file("picture2.png", data, {binary:true});
});

//Compile all the data into memory.
var base64 = null;
if (JSZip.support.uint8array) {
  promise = zip.generateAsync({type : "uint8array"});
} else {
  promise = zip.generateAsync({type : "string"});
}

//Generate the zip file and download it.
zip.generateAsync({type:"base64"}).then(function (base64) {
    location.href="data:application/zip;base64," + base64;
});

}

最佳答案

尝试使用Mini app : downloaderdocumentation示例中的函数。这将获取内容并返回该内容/图像的承诺。

function urlToPromise(url) {
return new Promise(function(resolve, reject) {
    JSZipUtils.getBinaryContent(url, function (err, data) {
        if(err) {
            reject(err);
        } else {
            resolve(data);
        }
    });
  });
}

zip.file(filename, urlToPromise(url), {binary:true});

关于javascript - 下载图像并使用JSZip和JS-Zip Utils作为Zip下载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44096065/

10-10 23:38