当前位置: 首页 > 工具软件 > jszip > 使用案例 >

jszip在线解压压缩文件

陈斌
2023-12-01

接到新需求:下载的文件是一个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)
 类似资料: