jszip插件实现图片打包下载的方法分析 原创
投稿:shichen2014
这篇文章主要介绍了jszip插件实现图片打包下载的方法,结合实例形式分析了JavaScript使用jszip插件依据图片列表打包下载zip压缩文件的相关操作技巧,需要的朋友可以参考下
前言
由于后端使用php、node.js、java等进行大量的图片下载操作可能会导致服务器负载过高,所以将图片下载转移到客户端是个不错的选择,借助 HTML5 中的新特性 Blob 和 URL.createObjectURL API 实现。
实现代码
function download(){
var urls = [
"https://example.com/img1.jpg",
"https://example.com/img2.png"
];
var zip = new JSZip();
var count = 0;
urls.forEach((url, index) => {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.responseType = "blob";
xhr.onload = function () {
if (xhr.status === 200) {
var name = url.substring(url.lastIndexOf("/") + 1);
zip.file(name, xhr.response);
}
count++;
if (count === urls.length) {
zip.generateAsync({type:"blob"}).then(function(content) {
saveAs(content, "pictures.zip");
console.log("下载成功");
});
}
};
xhr.send();
});
}另外,注意:在页面顶部还需要引入jszip插件
<head> <script src="https://cdn.bootcdn.net/ajax/libs/jszip/3.6.0/jszip.min.js"></script> </head>
这样可以将图片下载过程从服务器转移到客户端,从而减轻服务器压力。同时需要注意的是,在使用客户端进行大量图片下载时,也要防止网络请求并发数量过多导致浏览器崩溃。
