使用window.showSaveFilePicker来实现保存多个文件到同一目录下,但是最终实现的只有保存最后一个文件,并且文件名的保存也不对
async checkDownload() {
try {
const opts = {
types: [
{
description: "图片文件",
accept: {
"image/png": [".png"],
"image/jpeg": [".jpg", ".jpeg"],
},
},
],
excludeAcceptAllOption: true,
suggestedName: this.allcheckedList[0].PicName,
};
const selectedHandle = await window.showSaveFilePicker(opts); // 在循环外部调用一次
for (let imageUrl of this.allcheckedList) {
await this.saveImage(selectedHandle, imageUrl); // 在循环内部调用保存函数,传递句柄和图片URL
}
console.log("所有文件保存成功");
} catch (error) {
console.error("文件保存失败:", error);
}
},
async saveImage(selectedHandle, imageUrl) {
// 获取图片数据
const response = await fetch(imageUrl.PicWebPath.replace("http", "https"));
const imgData = await response.blob();
// 生成唯一的文件名
const extension = imageUrl.PicWebPath.substring(imageUrl.PicWebPath.lastIndexOf('.'));
const fileName = imageUrl.PicName;
// 使用句柄保存文件
const writable = await selectedHandle.createWritable();
await writable.write(imgData,{fileName});
await writable.close();
},