利用jszip实现批量文件压缩下载

1、安装插件

npm i jszip

2、实现方式

import JSZip from "jszip";

// 先封装一个方法,请求返回文件blob
async function fetchBlob(fetchUrl, method = "POST", body = null) {
    const response = await window.fetch(fetchUrl, {
        method,
        body: body ? JSON.stringify(body) : null,
        headers: {
            "Accept": "application/json",
            "Content-Type": "application/json",
            "X-Requested-With": "XMLHttpRequest",
        },
    });
    const blob = await response.blob();
    return blob;
}
// 下载文件
function downloadFile(url, fileName) {
  const a = document.createElement('a')
  a.style.display = 'none'
  a.href = url
  a.download = fileName
  document.body.appendChild(a)
  a.click()
  document.body.removeChild(a)
}

const zip = new JSZip();

//保存txt文件
zip.file("Hello.txt", "Hello World\n"); // 支持纯文本等

//保存json文件
 let jsonData={}
 const blob = new Blob([JSON.stringify(jsonData, null, 4)], {
    type: 'application/json'
  })
  zip.file('notes.json', blob) // json文件

//保存图片
zip.file("img1.jpg", fetchBlob('图片地址', 'GET'));

//创建文件夹,在里面添加文件
const folder1 = zip.folder("folder"); // 创建folder
folder1.file("img3.jpg", fetchBlob('/api/get/file?name=img.jpg', 'GET')); // folder里创建文件

//下载压缩包
zip.generateAsync({ type: "blob" }).then(blob => {
    const url = window.URL.createObjectURL(blob);
    downloadFile(url, "test.zip");
});

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值