加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

赏识器解压法子详解

发布时间:2021-06-02 21:16:21 所属栏目:编程 来源:互联网
导读:2.1 界说器材类 赏识器端在线解压 ZIP 文件的成果,可以拆分为 下载 ZIP 文件、理会 ZIP 文件和展示 ZIP 文件 3 个小成果。思量到成果复用性,阿宝哥把下载 ZIP
副问题[/!--empirenews.page--]

赏识器端在线解压 ZIP 文件的成果,可以拆分为 下载 ZIP 文件、理会 ZIP 文件和展示 ZIP 文件 3 个小成果。思量到成果复用性,阿宝哥把下载 ZIP 文件息争析 ZIP 文件的逻辑封装在 ExeJSZip 类中:

class ExeJSZip { 

  // 用于获取url地点对应的文件内容 

  getBinaryContent(url, progressFn = () => {}) { 

    return new Promise((resolve, reject) => { 

      if (typeof url !== "string" || !/https?:/.test(url)) 

        reject(new Error("url 参数不正当")); 

      JSZipUtils.getBinaryContent(url, { // JSZipUtils来自于jszip-utils这个库 

        progress: progressFn, 

        callback: (err, data) => { 

          if (err) { 

            reject(err); 

          } else { 

            resolve(data); 

          } 

        }, 

      }); 

    }); 

  } 

   

  // 遍历Zip文件 

  async iterateZipFile(data, iterationFn) { 

    if (typeof iterationFn !== "function") { 

      throw new Error("iterationFn 不是函数范例"); 

    } 

    let zip; 

    try { 

      zip = await JSZip.loadAsync(data); // JSZip来自于jszip这个库 

      zip.forEach(iterationFn); 

      return zip; 

    } catch (error) { 

      throw new error(); 

    } 

  } 

2.2 在线解压 ZIP 文件

操作 ExeJSZip 类的实例,我们就可以很轻易实此刻线解压 ZIP 文件的成果:

html 代码

<p> 

  <label>请输入ZIP文件的线上地点:</label> 

  <input type="text" id="zipUrl" /> 

</p> 

<button id="unzipBtn" onclick="unzipOnline()">在线解压</button> 

<p id="status"></p> 

<ul id="fileList"></ul> 

JS 代码

const zipUrlEle = document.querySelector("#zipUrl"); 

const statusEle = document.querySelector("#status"); 

const fileList = document.querySelector("#fileList"); 

const exeJSZip = new ExeJSZip(); 

 

// 执行在线解压操纵 

async function unzipOnline() { 

  fileList.innerHTML = ""; 

  statusEle.innerText = "开始下载文件..."; 

  const data = await exeJSZip.getBinaryContent( 

    zipUrlEle.value, 

    handleProgress 

  ); 

  let items = ""; 

  await exeJSZip.iterateZipFile(data, (relativePath, zipEntry) => { 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读