前端使用 jszip 实现.zip文件解压后上传,示例代码:
const JSZip = require("jszip");const axios = require("axios");// 上传文件function upload (file) {let formData = new FormData();formData.append("file", file);axios.post("xxx/upload/file", formData).then(res => {if (res.code === 200) {}})}// 解压 .zip 文件 async function unZip (zipFile) {// let fileList = []// 判断是否是 .zip 文件let isZipFile = zipFile.type === "application/zip"if (!isZipFile) {return}const zip = new JSZip();// 解压Zip压缩包,参数默认是二进制const zipData = await zip.loadAsync(zipFile);zipData.forEach(function (relativePath, file) {// fix: 过滤 mac osx 系统压缩的副作用if (!relativePath.startsWith("__MACOSX")) {// 判断是否是目录if (!file.dir) {zip.file(file.name).async("uint8array").then(function (u8) {// 创建 File 对象的let blob = new File([u8], file.name)// 将要上传的文件列表/* fileList.push({name: file.name,file: blob}) */// console.log("fileList: ", fileList)// 直接逐个上传解压后的文件upload(blob)});}}})}