在js中進行zip包解壓並校驗內容


上代碼吧~

import JSZip from 'jszip';
export default {
  methods: {
     async validZip(file, needFile) {
     // file為文件對象,needFile為必需的文件名數組
        var result, needFile, flag = true;
        var isLimit = file.size / 1024 / 1024 < 30;
        // 離線包大小大於30M
        if (!isLimit) {
          this.$message.error('離線包大小不能超過30M!');
          return Promise.reject();
        }
        // 讀取文件為異步操作
        result = await new Promise((resolve) => {
          JSZip.loadAsync(file).then(function (zip) {
            var nameArr = [];// zip.files為解壓出來的文件
            Object.keys(zip.files).forEach((fname) => {
              nameArr.push(fname);
            });
         // 返回解壓后的文件相對路徑
            return nameArr;
          }).then(function (results) {
            resolve(results);
          });
        });
     // 判斷是否包含文件
        needFile.forEach((file) => {
          if (result.indexOf(file) === -1) {
            flag = false;
          }
        });
        if (!flag) {
          this.$message.error('離線包目錄結構不正確!');
          return Promise.reject();
        }
     }
  }  
}

  存在問題:解壓出來的文件名如果含有中文,則是亂碼,需要額外處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM