https://www.xiefansq.cn/threejsP/2023/10/21/
// 生成多个Blob对象,这里假设你已经有了这些Blob对象
let blobs = [blob1, blob2, blob3]; // 将实际的Blob对象替换为示例变量
// 创建一个新的Blob对象,用于存储ZIP文件
let zipBlob = new Blob([''], { type: 'application/zip' });
// 创建一个Blob URL,用于在浏览器中显示ZIP文件
let zipUrl = URL.createObjectURL(zipBlob);
// 创建一个新的File API对象,用于表示ZIP文件
let zipFile = new File([zipBlob], 'archive.zip', { type: 'application/zip' });
// 创建一个新的下载链接元素
let downloadLink = document.createElement('a');
downloadLink.href = zipUrl;
downloadLink.download = zipFile.name;
// 创建一个新的文件夹名称
let folderName = 'MyFolder';
// 遍历Blob数组,将每个Blob对象转换为图片文件,并添加到ZIP文件中
for (let i = 0; i < blobs.length; i++) {
// 创建一个新的图片元素
let img = document.createElement('img');
img.src = URL.createObjectURL(blobs[i]); // 将Blob对象转换为URL
// 创建一个新的canvas元素,用于绘制图片
let canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
let ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0, img.width, img.height);
// 将图片数据转换为新的Blob对象
let imageBlob = canvas.toDataURL('image/png').split(',')[1];
let imageBlobParser = new BlobParser();
let imageBlobParsed = imageBlobParser.dataURItoBlob(imageBlob);
// 将新的Blob对象添加到ZIP文件中
zipBlob = zipBlob.slice(0, zipBlob.size, zipBlob.size + imageBlobParsed.size);
zipBlob.append(imageBlobParsed);
}
// 设置下载链接的href属性为ZIP文件的Blob URL
downloadLink.href = URL.createObjectURL(zipBlob);
// 将下载链接添加到页面中,并触发点击事件以开始下载ZIP文件
document.body.appendChild(downloadLink);
downloadLink.click();
|