批量下载功能,下载压缩包
注意:
先安装 npm 安装
jszip
file-saver
/**
* 下载并压缩文件到 ZIP 文件中
* @param urls 要下载的文件的 URL 数组
* @param rootFolderName ZIP 文件中的根文件夹名称
* @param zipFileName 生成的 ZIP 文件的名称
* @returns Promise<void> 下载并生成 ZIP 文件完成后解析
*/
async function downloadAndZipFiles(
urls: string[],
rootFolderName: string,
zipFileName: string = "files.zip"
): Promise<void> {
const zip = new JSZip();
import JSZip from "jszip";
import { saveAs } from "file-saver";
// 遍历 URL 数组并下载文件
const downloadPromises: Promise<void>[] = urls.map((url) => {
return fetch(url)
.then((response) => {
if (!response.ok) {
throw new Error(`Failed to fetch ${url}: ${response.statusText}`);
}
return response.blob();
})
.then((blob) => {
// 从 URL 中提取文件名(假设 URL 是有效的,且文件名在路径末尾)
const fileName: string = url.split("/").pop() || "";
// 将文件添加到 ZIP 的指定文件夹中
zip.folder(rootFolderName).file(fileName, blob);
});
});
// 等待所有文件下载完成
await Promise.all(downloadPromises);
// 生成 ZIP 文件
const content: Blob = await zip.generateAsync({ type: "blob" });
// 触发下载
saveAs(content, zipFileName);
}
const pdfUrls=['http://23432432.doc','http://23432432.doc']
//调该方法,传入要下载得url ,文件名称,压缩包名称
const downloadAllAsZip = () => {
downloadAndZipFiles(pdfUrls.value, "my_files", "flattened_files.zip")
.then(() => {
console.log("ZIP 文件下载完成!");
})
.catch((error) => {
console.error("发生错误:", error);
});
};

浙公网安备 33010602011771号