我正在测试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));
}
});
}
发布于 2020-12-30 01:38:43
你有没有考虑过使用Array.filter?
Object.keys(unzip)
.filter(key => {
return !key.match(/^__MACOSX\//);
})
.forEach( (key) => {
this.files.push({name: key, data: unzip[key]});
});
https://stackoverflow.com/questions/65495916
复制相似问题