前端流下载写入文件夹分组

用到 createWriteStream 和 zip 插件:

写入文件夹就是拼接好路径就行:文件夹字符串,比如 ‘第一文件夹/子文件夹/孙文件夹’,成功后可写入本机

 

const handleBatchDownload = async (cosFileNameUrls, downName) => {
    proxy.$modal.closeLoading();
    // 创建一个文件  项目名称
    const fileStream = createWriteStream(downName);
    const readableZipStream = new ZIP({
        async pull(ctrl) {
            for (let i = 0; i < cosFileNameUrls.length; i++) {
                const res = await fetch(cosFileNameUrls[i].url);
                const stream = () => res.body;
                // 创建文件夹名字  文件夹名字folder 拼接
                const name = cosFileNameUrls[i].folder + cosFileNameUrls[i].cosFileName;
                ctrl.enqueue({ name, stream }); // 不断接收要下载的文件
            }
            ctrl.close();
        },
    });

    if (window.WritableStream && readableZipStream.pipeTo) {
        return readableZipStream.pipeTo(fileStream).then(() => console.log('压缩包下载完成'));
    }
};

 

posted @ 2024-05-23 14:40  行走的蒲公英  阅读(8)  评论(0编辑  收藏  举报