您好,我想知道如何检查压缩文件是否加密或没有使用JSZip库。我现在尝试做一个loadAsync函数,如果它转到.catch(),我总是假设它的原因是因为它是加密的。我知道应该有更好的方法来做到这一点,所以我尝试检查库本身,然后发现调用了isEncrypted()函数的条目。我只是不知道如何访问这些条目。有人知道是怎么回事吗?
if (hasZipFileFlag === true) {
var jszip = new JSZip();
try {
await jszip.loadAsync(testZip).then(function(res) {
UtilLogClass.logFunc('ZIP READ SUCCESSFULLY', res);
}).catch((err) => {
UtilLogClass.logFunc('jszip loadAsync then() ERROR', err);
zipFileHasPassFlag = true;
});
} catch (err) {
UtilLogClass.logFunc('ZIP READ ERROR', err);
}
}zip已经是一个DOM对象,它的类型是“※/x-zip-压缩”,我已经有了一种方法来确定它是否是zip文件。
发布于 2020-11-26 16:15:27
从JSZip limitations docs来看,这似乎是不可能的:
并非支持zip文件的所有功能。经典压缩文件可以工作,但不支持加密压缩、多卷等,并且loadAsync()方法将返回一个失败的承诺。
编辑(按评论):
您可以将您的代码重构为如下所示:
if (hasZipFileFlag === true) {
var jszip = new JSZip();
try {
const res = await jszip.loadAsync(testZip);
UtilLogClass.logFunc("ZIP READ SUCCESSFULLY", res);
} catch (err) {
// if(err === "encrypted error from JSZip") { ... }
zipFileHasPassFlag = true;
UtilLogClass.logFunc("ZIP READ ERROR", err);
}
}catch块将捕获loadAync(...)方法抛出的任何错误。
https://stackoverflow.com/questions/65017905
复制相似问题