接到新需求:下载的文件是一个zip压缩文件,分两种情况,1.压缩文件内是一个需要的文件2.文件内又是一个zip,需要解压缩两次。
首先下载jszip和jszip-utils两个js文件,在页面中引入,这就不用多说了,然后封装解压的方法
<--
blob是下载的blob类型文件,一定要确定这个类型。
num是压缩文件内的文件个数
isTrue就是是否需要二次解压
-->
function useZip(blob,num,isTrue){
//因为压缩文件内一般有多个页文件,所以需要遍历有几个文件,获取文件名,分别解压缩
for(let i=0; i<num; i++){
JSZip.loadAsync(blob).then((zip)=>{
var nameArr = [];
for(var key in zip.files){
nameArr.push(key)
}
if(isTrue == true){
//每个文件名都解压缩,返回blob类型二次解压
return zip.file(nameArr[i].async('blob'));
}else{
return zip.file(nameArr[i].async('string'));
}
}).then((response)=>{
if(isTrue == true) {
let blob1 = new Blob([response],{type:'text/plain'});
JSZip.loadAsync(blob1).then((zip)=>{
return zip.file(Object.keys(zip.files)[0]).async('string');
}).then((response)=>{
console,log(response)
})
}else{
console.log(response);
}
})
}
}
补充一下,blob类型的文件,如果相当做src作为图片展示,那么做如下操作
let src = URL.createObjectURL(blob);
let img = document.createElement('img')
img.src = src
document.body.appendChild(img)