1.需要安装 npm i jszip 但是 我这边使用 jszip有问题,换成了 jszip-sync
/**
* 实现url 压缩下载
* @param {Array} srcList 文件列表
* @param {String} name 导出文件名称
*/
export const srcDownloadZip = async (srcList = [], name) => {
// 创建Zip实例
const zip = new JSZip();
const promisesALl = []
srcList.forEach(async item => {
const blobs = srcDownloadSendBlob(item.filepath).then(res => {
console.log(res, 'blob');
const name = item.name
zip.file(name, res);
})
promisesALl.push(blobs)
})
const isok = await Promise.all(promisesALl).then(res => {
return new Promise((resolve, reject) => {
try {
const isok = zip.generateAsync({ type: "blob" }).then(function (content) {
// see FileSaver.js
console.log(content, 'contet');
try {
saveAs(content, `${name}.zip`);
return true
} catch (error) {
return false
}
});
resolve(isok)
} catch (error) {
return false
}
})
})
return isok
};
export const srcDownloadSendBlob = (filepath) => {
return new Promise(async (resolve, reject) => {
try {
const response = await fetch(filepath);
const arrayBuffer = await response.arrayBuffer();
// 创建Blob对象并设置MIME类型
const mimeType = response.headers.get('content-type');
const blob = new Blob([arrayBuffer], { type: mimeType });
resolve(blob)
} catch (error) {
}
});
};