【发布时间】:2022-01-18 10:21:21
【问题描述】:
我有一个简单的 Web 应用程序,用于将 zip 文件上传到服务器。在 Javascript 部分中,我使用了 try-catch 块,通过读取条目并捕获相应的错误来检查文件是否受密码保护(预定义且已知的密码)。
我使用的js库是https://github.com/gildas-lormeau/zip.js/blob/master/dist/zip.min.js。
let reader;
try {
reader = new zip.ZipReader(new zip.BlobReader(file), {
password
});
const entries = await reader.getEntries();
for (const entry of entries) {
try {
await entry.getData(new zip.BlobWriter(), {
onprogress: (index, max) => {
zip.BlobWriter.$cancel()
reader.close()
}
});
} catch (error) {
if (error.message === zip.ERR_ENCRYPTED ||
error.message === zip.ERR_INVALID_PASSWORD) {
alert("Incorrect password")
return false;
} else {
console.log(error)
}
}
}
} catch (error) {
console.log(error)
} finally {
await reader.close();
}
上面的代码成功判断出文件是否没有被预先设定的密码加密。但是,对于某些文件,错误声明如下。 TypeError: Cannot read properties of undefined (reading 'importKey')
我想知道为什么会发生这种情况以及如何知道文件是否受密码保护。
谢谢
【问题讨论】:
-
使用
console.error(error),您应该可以获得更多错误发生位置的信息。不知道错误来自哪里,很难说。
标签: javascript