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

使用 jszip 实现.zip文件解压后上传

易修洁
2023-12-01

前端使用 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)
        });
      }
    }
  })
}
 类似资料: