vue 批量下载 打包zip
import JSZip from "jszip";
import FileSaver from "file-saver";
import axios from "axios";
export function downfilesZip(fileList) {
const zip = new JSZip();
const cache = {};
const promises = [];
fileList.forEach((item, i) => {
const promise = getFile(item).then((data) => {
const file_name = i + item.substring(item.lastIndexOf("/") + 1);
zip.file(file_name, data, { binary: true });
cache[file_name] = data;
});
promises.push(promise);
});
Promise.all(promises).then(() => {
zip.generateAsync({ type: "blob" }).then((content) => {
FileSaver.saveAs(content, "批量下载.zip");
});
});
}
export function getFile(url) {
return new Promise((resolve, reject) => {
axios({
method: "get",
url,
responseType: "blob",
})
.then((res) => {
resolve(res.data);
})
.catch((error) => {
reject(error.toString());
});
});
}