使用javascript和fflate从zip存档中删除__MACOSX/文件



我正在测试fflate以替换JSZip,后者有时无法打开使用macOS或windows内置压缩实用程序创建的存档。该库运行良好,我能够创建和读取zip文件的内容。我已经对使用macOS创建的归档进行了测试,我注意到在achive中,压缩实用程序将为归档的每个条目创建一些__MACOSX/_.filename.ext文件。当用户使用我的应用程序打开zip时,我想从文件列表中删除这些文件,但我不知道如何继续。有什么解决方案可以与vue和javascript一起使用来实现这一点吗?

这是我在vue方法中用来读取zip文件的代码

async handleFiles(e) {
const file = await this.readFile(e.dataTransfer.files[0]);
const unzip = unzipSync(file);
Object.keys(unzip).forEach( (key) => {
this.files.push({name: key, data: unzip[key]});
});
},
readFile(file) {
return new Promise( (resolve,reject) => {
const reader = new FileReader();
reader.readAsArrayBuffer(file);
reader.onerror = reject;
reader.onloadend = () => {
resolve(new Uint8Array(reader.result));
}
});
}

您是否考虑过使用Array.filter?

Object.keys(unzip)
.filter(key => {
return !key.match(/^__MACOSX//);
})
.forEach( (key) => {
this.files.push({name: key, data: unzip[key]});
});