需要安装 file-saver 和 JSZip
import JSZip from 'jszip'
import { saveAs } from 'file-saver'
export function filesDownloadZip(fileList) {
if (!fileList.length) return
const fileArr = fileList.map((it) => ({
...it,
fileUrl: `${it.url}${it.fileName}`,
}))
const zip = new JSZip()
const promises = []
fileArr.forEach((file) => {
const pro = 文件调用的接口(file.fileName, file.fileUrl)
.then((data) => {
// 下载文件, 并存成ArrayBuffer对象
zip.file(file.fileName, data.data, { binary: true }) // 逐个添加文件
})
.catch(() => {
})
promises.push(pro)
})
Promise.all(promises).then(() => {
zip.generateAsync({ type: 'blob' }).then((content) => {
// 生成二进制流
saveAs(content, `下载的压缩包.zip`) // 利用file-saver保存文件
})
})
}