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

JSzip 前端处理下载打包文件夹

谢俊英
2023-12-01
    // 将文件夹里的文件作为数组传进来
    filesToRar(files) {
      this.fileCount = files.length
      this.zippedFileCount = 0
      let zip = new JSZip();
      this.zipDir(zip, files, zip);
    },
    // 循环下载数组中的每个文件
    zipDir(zip, files, packageZip) {
      for (let i = 0; i < files.length; i++) {
          let item = files[i];
          this.zipFile(zip, item, packageZip);
      }
    },
    async zipFile(zip, file, packageZip) {
      let res = await axios({
        method: 'get',
        url: file.downloadUrl,
        responseType: 'blob',
        timeout: 4 * 60 * 60 * 1000,
        onDownloadProgress:(event)=> {
        }
      });
      if(res && res.data) {
        zip.file(file.name, res.data);
        this.zippedFileCount++
      }
      //  所有文件都下载之后,进行打包下载
      if (this.fileCount === this.zippedFileCount) {
        // 把打包内容异步转成blob二进制格式
        packageZip.generateAsync({ type: "blob" }, function updateCallback(metadata){
          console.log(metadata.percent.toFixed(2));
        }).then((content) => {

          saveAs(content, this.floderdown.customName);

        }).catch((res)=>{
          // this.downloadMsg= "压缩失败"
        });
      }
    }

 类似资料: