文章出處

  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 是自己封裝的, 有任何問題的話反饋至github的issue

https://github.com/sqqihao/nono_framework/issues?q=is%3Aopen+is%3Aissue 

  解壓ZIP壓縮包的完整DEMO

  因為zipJS依賴Worker, 所以要在http協議下才能正常使用, 我把html放在git :http://sqqihao.github.io/codes/zipjs/zip.html

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

作者: NONO
出處:http://www.cnblogs.com/diligenceday/
QQ:287101329 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()