首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >zipfile库,检查JSZip文件是否加密

zipfile库,检查JSZip文件是否加密
EN

Stack Overflow用户
提问于 2020-11-26 15:49:49
回答 1查看 128关注 0票数 0

您好,我想知道如何检查压缩文件是否加密或没有使用JSZip库。我现在尝试做一个loadAsync函数,如果它转到.catch(),我总是假设它的原因是因为它是加密的。我知道应该有更好的方法来做到这一点,所以我尝试检查库本身,然后发现调用了isEncrypted()函数的条目。我只是不知道如何访问这些条目。有人知道是怎么回事吗?

代码语言:javascript
复制
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文件。

EN

回答 1

Stack Overflow用户

发布于 2020-11-26 16:15:27

JSZip limitations docs来看,这似乎是不可能的:

并非支持zip文件的所有功能。经典压缩文件可以工作,但不支持加密压缩、多卷等,并且loadAsync()方法将返回一个失败的承诺。

编辑(按评论):

您可以将您的代码重构为如下所示:

代码语言:javascript
复制
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(...)方法抛出的任何错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65017905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档