Я пытаюсь скачать почтовый индекс изображений. Эти изображения приходят по какой-то ссылке. Поэтому, как только пользователь нажимает на ссылки, необходимо загрузить zip. Я использую JS ZIP-библиотеку для этого.
Вот мой код
function downloadImagesZAip(){
var imgpath = ['https://i.picsum.photos/id/515/536/354.jpg','https://i.picsum.photos/id/237/536/354.jpg'];
var zip = new JSZip();
function request(url) {
return new Promise(function(resolve, reject) {
var httpRequest = new XMLHttpRequest();
httpRequest.open("GET", url);
httpRequest.responseType = "arraybuffer"; // here, you ask for the binary content
httpRequest.onload = function() {
zip.file(url, this.response); // you will get an ArrayBuffer there
resolve();
};
httpRequest.onerror = function() {
// don't forget to reject the promise when an error occurs,
// the promise will never finish otherwise
reject(new Error("can't load " + url));
};
httpRequest.send();
});
}
Promise.all(imgpath.map(function(url) {
return request(url)
}))
.then(function() {
console.log(zip);
zip.generateAsync({
type: "blob"
})
.then(function(content) {
a.download = "folder" + new Date().getTime();
a.href = URL.createObjectURL(content);
a.innerHTML = "download " + a.download;
});
})
}
Но как только эта функция вызывается при нажатии, она выдает мне ошибку zip.generateAsync is not a function
Я также попытался заменить указанный выше блок запроса на приведенный ниже блок запроса. Но все та же ошибка
function request(url) {
return new Promise(function(resolve) {
var httpRequest = new XMLHttpRequest();
httpRequest.open("GET", url);
httpRequest.onload = function() {
zip.file(url, this.responseText);
resolve()
}
httpRequest.send()
})
}
Пожалуйста, дайте мне знать, где я делаю это неправильно