亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

javascript實現網頁端解壓并查看zip文件

2024-05-06 16:26:22
字體:
來源:轉載
供稿:網友
昨天給大家分享了在網頁端使用zip.js插件實現在線壓縮文件的代碼,今天給大家分享一下javascript實現網頁端解壓并查看zip文件的方法,非常的實用,有需要的小伙伴可以參考下
 

WEB前端解壓ZIP壓縮包

  web前端解壓zip文件有什么用:

    只考慮標準瀏覽器的話, 服務器只要傳輸壓縮包到客戶端, 節約了帶寬, 而且節約了傳輸時間, 聽起來好像很厲害的說;

        如果前端的代碼很多, 而且包含大副的圖片,那么就可以把js和css和jpg和png等各種數據通過服務端打包成zip傳送到瀏覽器, 瀏覽器負責解壓, css實用動態生成插入到dom中,js也用globalEval直接執行, jpg或者png各種圖片文件由blob流轉化為image, 直接插入到瀏覽器中;

  html5支持讀取Blob(二進制大對象, file文件也是繼承了Blob), 并轉化為圖片流或者文字流或者其他流格式, 這也是為什么瀏覽器可以讀取"application/zip"文件的原因;

  要在瀏覽器中解壓zip文件的話需要引入四個js , 因為UnZipArchive.js依賴了zip.js, mime-type.js和jquery.js , 測試demo如下:

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <script src="http://gildas-lormeau.github.io/zip.js/demos/zip.js"></script> <script src="http://gildas-lormeau.github.io/zip.js/demos/mime-types.js"></script> <script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.js"></script> <script src="http://files.cnblogs.com/files/diligenceday/UnZipArchive.js"></script></head><body><h2> demo</h2><div> <input type="file" id="file"></div><ul id="dir"></ul><script> $("#file").change(function (e) {  var file = this.files[0];  window.un = new UnZipArchive( file );  un.getData( function() {   //獲取所以的文件和文件夾列表;   var arr = un.getEntries();   //拼接字符串   var str = "";   for(var i=0; i<arr.length; i++ ) {    //點擊li的話直接下載文件;    str += "<li onclick=download('"+arr[i]+"')>"+arr[i]+"</li>"   };   $("#dir").html( str );  }); }); var download = function ( filename ) {  un.download( filename ); };</script></body></html>

     UnzioarichiveJS 是自己封裝的, 有任何問題的話請及時反饋

  解壓ZIP壓縮包的完整DEMO

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <script src="http://gildas-lormeau.github.io/zip.js/demos/zip.js"></script> <script src="http://gildas-lormeau.github.io/zip.js/demos/mime-types.js"></script> <script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.js"></script> <style>  code{   display: block;   padding: 10px;   background: #eee;  } </style></head><body><div> <h1>  兼容性 </h1> <div>  <p>   zip.js可以在所有的chrome瀏覽器和firefox瀏覽器中運行, 可以在safari6和IE10,以及IE10以上運行;  </p>  <p>   如果要在IE9和safari中運行需要兩個設置:  </p>  <code>   1:zip.useWebWorkers == false  </code>  <code>   2:并引用這個JS:https://bitbucket.org/lindenlab/llsd/raw/7d2646cd3f9b/js/typedarray.js  </code> </div> <h2>  demo </h2> <div>  <input type="file" id="file"> </div> <ul id="dir"> </ul> <script>  $("#file").change(function (e) {   var file = this.files[0];   window.un = new UnZipArchive( file );   un.getData( function() {    var arr = un.getEntries();    var str = "";    for(var i=0; i<arr.length; i++ ) {     str += "<li onclick=download('"+arr[i]+"')>"+arr[i]+"</li>"    };    $("#dir").html( str );   });  });  var download = function ( filename ) {   un.download( filename );  }; </script></div><script> zip.workerScriptsPath = "http://gildas-lormeau.github.io/zip.js/demos/"; /**  * @desc 解壓縮文件的類;  * @return UnZipArchive 的實例;  * */ var UnZipArchive = function( blob ) {  if( !blob ) {   alert("參數不正確, 需要一個Blob類型的參數");   return ;  };  if( !(blob instanceof Blob) ) {   alert("參數不是Blob類型");   return ;  };  function noop() {};  this.entries = {};  this.zipReader = {};  var _this = this;  this.length = 0;  this.onend = noop;  this.onerror = noop;  this.onprogress = noop;  //創建一個延遲對象;  var def = this.defer = new $.Deferred();  zip.createReader( new zip.BlobReader( blob ), function(zipReader) {   _this.zipReader = zipReader;   zipReader.getEntries(function(entries) {    _this.entries = entries;    //繼續執行隊列;    def.resolve();   });  }, this.error.bind(_this) ); }; /**  * @desc 把blob文件轉化為dataUrl;  * */ UnZipArchive.readBlobAsDataURL = function (blob, callback) {  var f = new FileReader();  f.onload = function(e) {callback( e.target.result );};  f.readAsDataURL(blob); }; $.extend( UnZipArchive.prototype, {  /**   * @desc 獲取壓縮文件的所有入口;   * @return ArrayList;   * */  "getEntries" : function() {   var result = [];   for(var i= 0, len = this.entries.length ; i<len; i++ ) {    result.push( this.entries[i].filename );   }   return result;  },  /**   * @desc 獲取文件Entry;   * @return Entry   * */  "getEntry" : function ( filename ) {   var entrie;   for(var i= 0, len = this.entries.length ; i<len; i++ ) {    if( this.entries[i].filename === filename) {     return this.entries[i];    };   }  },  /**   * @desc 下載文件   * @param filename;   * @return void;   * */  "download" : function ( filename , cb , runoninit) {   var _this = this;   this.defer = this.defer.then(function() {    var def = $.Deferred();    if(!filename) return ;    if(runoninit) {     return runoninit();    };    var entry = _this.getEntry( filename );    if(!entry)return;    entry.getData(new zip.BlobWriter(zip.getMimeType(entry.filename)), function(data) {     if( !cb ) {      UnZipArchive.readBlobAsDataURL(data, function( dataUrl ) {       var downloadButton = document.createElement("a"),         URL = window.webkitURL || window.mozURL || window.URL;       downloadButton.href = dataUrl;       downloadButton.download = filename;       downloadButton.click();       def.resolve( dataUrl );       _this.onend();      });     }else{      cb( data );      def.resolve( data );     }    });    return def;   });  },  /**   * @desc 獲取對應的blob數據;   * @param filename 文件名;   * @param callback回調, 參數為 blob;   * @desc 或者可以直接傳一個函數作為zip解壓縮完畢的回調;   * */  "getData" : function ( filename, fn ) {   if( typeof filename === "string") {    this.download(filename, function( blob ) {     fn&&fn( blob );    });   }else if( typeof filename === "function") {    this.download("test", null, function( blob ) {     filename();    });   };  },  "error" : function() {   this.onerror( this );   throw new Error("壓縮文件解壓失敗");  } });</script></body></html>

  但是瀏覽器兼容又是大問題;



注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九视频这里只有精品| 亚洲一区二区三区sesese| 日韩中文字幕在线观看| 精品露脸国产偷人在视频| 欧美成人国产va精品日本一级| 国产精品福利久久久| 欧美乱妇高清无乱码| 97在线视频免费观看| 欧美一级大片在线免费观看| 久久久精品中文字幕| 97高清免费视频| 亚洲女人天堂视频| 国产精品精品一区二区三区午夜版| 好吊成人免视频| 色综合视频网站| 成人久久久久久久| 色无极影院亚洲| 国产欧美va欧美va香蕉在线| 亚洲精品国产综合区久久久久久久| 热re91久久精品国99热蜜臀| 91av中文字幕| 亚洲最大成人网色| 国产精品网站入口| 91天堂在线视频| 国产日韩欧美在线视频观看| 高潮白浆女日韩av免费看| 欧美成人网在线| 色偷偷av一区二区三区乱| 亚洲最大成人免费视频| 精品成人久久av| 欧美国产精品人人做人人爱| 亚洲黄在线观看| 国产精品久久久久久久久免费看| www.亚洲成人| 国产97在线观看| 亚洲国产成人av在线| 中文字幕日韩欧美在线视频| 国产精品人成电影| 中国人与牲禽动交精品| 午夜精品一区二区三区在线播放| 欧美日韩亚洲一区二| 91av免费观看91av精品在线| 黄网站色欧美视频| 性金发美女69hd大尺寸| 在线观看欧美视频| 日本精品va在线观看| 久久久亚洲欧洲日产国码aⅴ| 91国产一区在线| 精品人伦一区二区三区蜜桃免费| 7m精品福利视频导航| 国产欧美日韩亚洲精品| 91精品久久久久久综合乱菊| 欧美日韩爱爱视频| 夜夜嗨av一区二区三区四区| 一区二区在线免费视频| 日韩av在线资源| 欧美黄色片视频| 日韩在线视频一区| 国产在线久久久| 福利一区福利二区微拍刺激| 中文字幕一区二区精品| 久久天天躁狠狠躁老女人| 日韩av综合网站| 久久夜色精品国产| 欧美亚洲另类视频| 另类视频在线观看| 亚洲精品电影在线| 国产成人中文字幕| 成人黄色av网| 欧美视频在线视频| 成人网在线视频| 亚洲国产精品中文| 久久久久久久久国产| 日韩小视频在线| 国产一区二区久久精品| 欧美一级片久久久久久久| 日本精品性网站在线观看| 久久在线视频在线| 欧美日韩国产第一页| 国产精品人人做人人爽| 国产精品成久久久久三级| 亚洲视频综合网| 欧美巨乳在线观看| 亚洲a在线观看| 国产精彩精品视频| 欧美性猛交xxxx偷拍洗澡| 亚洲欧美中文日韩在线v日本| 久久精品国产99国产精品澳门| 欧美激情一级二级| 中文字幕国产亚洲2019| 精品国产乱码久久久久酒店| 亚洲少妇激情视频| 97成人超碰免| 日韩有码在线视频| 久久99视频免费| 97久久精品视频| 操人视频在线观看欧美| 国产精彩精品视频| 中文字幕av一区| 欧美大片免费观看在线观看网站推荐| 亚洲精品资源美女情侣酒店| 亚洲国产成人爱av在线播放| 韩日精品中文字幕| 亚洲成人三级在线| 亚洲女人被黑人巨大进入| 91精品国产91久久久久| 欧美极品少妇全裸体| 成人a级免费视频| 91美女片黄在线观看游戏| 不卡av电影院| 性色av香蕉一区二区| 亚洲精品欧美一区二区三区| 日韩欧美一区二区在线| 在线看日韩av| 亚洲欧美色图片| 欧美精品在线看| 久久中文字幕在线视频| 欧美在线国产精品| 欧美成人国产va精品日本一级| 色综合久久久久久中文网| 久久香蕉国产线看观看av| 亚洲成人久久久| 日韩极品精品视频免费观看| 午夜精品久久17c| 日韩精品视频在线观看网址| 丁香五六月婷婷久久激情| 欧美一区二区三区图| 国产亚洲欧美日韩一区二区| 久久久亚洲福利精品午夜| 亚洲免费av片| 91夜夜未满十八勿入爽爽影院| 国产成人免费91av在线| 久久久久99精品久久久久| 国产综合色香蕉精品| 57pao国产精品一区| 成人综合国产精品| 日韩av免费在线| 国产成人拍精品视频午夜网站| 久久天堂av综合合色| 亚洲欧美日韩视频一区| 免费97视频在线精品国自产拍| 日韩精品亚洲精品| 伊人久久久久久久久久久久久| 成人情趣片在线观看免费| 欧美午夜视频一区二区| 欧美日韩成人在线播放| 97国产精品人人爽人人做| 国产精品国产福利国产秒拍| 亚洲最大福利网站| 日韩av免费在线播放| 日韩av123| 97视频在线观看免费高清完整版在线观看| 亚洲a中文字幕| 欧美国产日韩一区二区在线观看| 成人精品一区二区三区| 亚洲美女视频网站| 一本色道久久88综合日韩精品| 57pao成人永久免费视频| 亚洲精品美女网站| 91久久国产精品| 国产精品久久久久7777婷婷| 亚洲精品成人网| 久久久久久久999| 亚洲免费人成在线视频观看|