JavaScript在线解压 ZIP 文件 JavaScript 怎样在线解压 ZIP,jszip实现解压压缩包,并下载压缩包内文件
JavaScript在线解压 ZIP 文件 JavaScript 怎样在线解压 ZIP 文 jszip实现解压压缩包,并下载压缩包内文件
·
JSzip解压压缩包、下载压缩包内文件
废话不多说,直接上代码
1、所需物料准备
1、jszip.min.js 仓库地址:https://github.com/Stuk/jszip
CDN地址:https://cdn.bootcdn.net/ajax/libs/jszip/3.10.0/jszip.min.js
2、FileSaver.min.js 仓库地址:https://github.com/eligrey/FileSaver.js
CDN地址:https://cdn.bootcdn.net/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js
2、准备好所需物料后废话不多说,可以上代码了
<body>
<input id="uploadFile" type="file" onchange="changeFile()" />
<script src="https://cdn.bootcdn.net/ajax/libs/jszip/3.10.0/jszip.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js"></script>
<script>
function changeFile() {
const uploadFileEle = document.querySelector("#uploadFile");
let file = uploadFileEle.files[0];
JSZip.loadAsync(file).then((res) => {
console.log(res.files);
res.forEach((ele, obj) => {
if (!obj.dir) {//判断是否为文件
/**
转换成Base64方式,根据需求引用
let binary = '';
let bytes = obj._data.compressedContent;
for (let index = 0; index < bytes.length; index++) {
const element = bytes[index];
binary += String.fromCharCode(element);
}
binary = window.btoa(binary);
*/
// 压缩包内文件名称
let fileName = obj.name;
//压缩包内文件大小
let unsize = obj._data.uncompressedSize / 1024;
let fileSize = unsize.toFixed(2) + "KB";
//下载操作
let base = res.file(obj.name).async('blob');
base.then(rr => {
saveAs(rr, obj.name);
})
}
})
})
}
</script>
</body>
3、温馨提示
1、代码可自行复制测试,下载操作根据实际需求更改即可
2、上述代码文件上传没做类型限制,本人在测试过程中发现:.apk,.zip,.rar可读取包内文件。.7z是不支持的哇
3、如压缩包内文件命名为中文是,解压出来文件名可能显示乱码,下载后重命名即可。
更多推荐
已为社区贡献1条内容
所有评论(0)