{"id":520,"date":"2011-02-23T07:06:28","date_gmt":"2011-02-23T06:06:28","guid":{"rendered":"https:\/\/d-mueller.de\/blog\/?p=520"},"modified":"2011-02-23T09:06:57","modified_gmt":"2011-02-23T08:06:57","slug":"zip-archive-entpacken-mit-javascript","status":"publish","type":"post","link":"https:\/\/d-mueller.de\/blog\/zip-archive-entpacken-mit-javascript\/","title":{"rendered":"Zip-Archive entpacken mit Javascript"},"content":{"rendered":"<p>Unzippen mit Javascript? Wer sollte sowas wollen? Egal! Es geht, reicht das als Begr\u00fcndung? Und das garnicht mal so schlecht. Wie \u00fcblich schmei\u00dfe ich gleich mit Code um mich:<\/p>\n<pre data-enlighter-language=\"html\" class=\"EnlighterJSRAW\">\r\n&lt;script src=&quot;ZipFile.complete.js&quot;&gt;&lt;\/script&gt;\r\n&lt;script&gt;\r\nvar zipFile = new ZipFile(&quot;zipfile.zip&quot;, readingDoneCallback);\r\n\r\nfunction readingDoneCallback(zip)\r\n{\r\n\tconsole.log(&quot;Zipfile reading finished! &quot; + zip.entries.length + &quot; files found in zip&quot;);\r\n\t\r\n\tfor (var i = 0; i &lt; zip.entries.length; i++)\r\n\t{\r\n\t\tzip.entries[i].extract(extractCallback);\r\n\t}\r\n};\r\n\r\nfunction extractCallback(entry, entryContent) \r\n{\r\n\tvar filename = entry.name,\r\n\t\tcsize = entry.compressedSize,\r\n\t\tucsize = entry.uncompressedSize;\r\n\t\r\n\tconsole.log(&quot;File &quot; + filename + &quot; - comp.: &quot; + csize + &quot;, uncomp.: &quot; + ucsize + &quot;byte&quot;);\r\n\tconsole.log(&quot;File-Content: &quot; + entryContent);\r\n}\r\n&lt;\/script&gt;\r\n<\/pre>\n<p>Simpler Aufbau, logische Implementierung. Alles was zu dieser Magie n\u00f6tig ist, ist eine 64KB gro\u00dfe Javascript-Datei, die auf Bin\u00e4rebene flei\u00dfig Bytes umhershiftet.<\/p>\n<div id=\"attachment_522\" style=\"width: 629px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/d-mueller.de\/blog\/wp-content\/uploads\/2011\/02\/js-unzip1.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-522\" src=\"https:\/\/d-mueller.de\/blog\/wp-content\/uploads\/2011\/02\/js-unzip1.png\" alt=\"js-unzipping\" title=\"js-unzipping\" width=\"619\" height=\"192\" class=\"size-full wp-image-522\" srcset=\"https:\/\/d-mueller.de\/blog\/wp-content\/uploads\/2011\/02\/js-unzip1.png 619w, https:\/\/d-mueller.de\/blog\/wp-content\/uploads\/2011\/02\/js-unzip1-300x93.png 300w\" sizes=\"auto, (max-width: 619px) 100vw, 619px\" \/><\/a><p id=\"caption-attachment-522\" class=\"wp-caption-text\">js-unzipping<\/p><\/div>\n<p>Geht nur mit handels\u00fcblichen Zip-Dateien und auch nur entpacken ist m\u00f6glich. Die Originalquelle der Library ist <a href=\"http:\/\/cheeso.members.winisp.net\/srcview.aspx?dir=js-unzip\">diese<\/a>, eine <a href=\"http:\/\/cheeso.members.winisp.net\/srcview.aspx?dir=js-unzip&#038;file=Jsunzip-Readme.txt\">Readme<\/a> zur Library gibts auch. Das Ganze ist vollkommen unabh\u00e4ngig von jQuery oder anderen JS-Libraries. \u00dcbrigens war der Initiator eine <a href=\"http:\/\/stackoverflow.com\/questions\/2095697\/unzip-files-using-javascript\">Frage auf Stackoverflow<\/a>, die der gute Herr Dino Chiesa zum Anreiz genommen hat, da &#8222;mal eben was zu schreiben&#8220; ;).<\/p>\n<p>Zum Ausprobieren m\u00fcsst ihr das Ganze \u00fcber einen Webserver laufen lassen, da die Zip-Datei per XHR und GET (nix PHP) geladen wird. Wer es mal selbst ausprobieren will, schnappt sich am Besten die <i>ZipFile.complete.js<\/i> <a href=\"http:\/\/cheeso.members.winisp.net\/srcview.aspx?dir=js-unzip\">von hier<\/a> und nimmt meinen Codeschnippsel von oben, knallt das auf nen Webserver und testet. Die Demo vom Autor selbst ist grauenvoll undurchsichtig.<\/p>\n<p>Auch wenn der Nutzen erstmal begrenzt zu sein scheint, kann man das mal im Hinterkopf behalten.<\/b><\/p>\n<p><b>[Update:<\/b> Bei einer Google Nachlese l\u00e4uft mir grad noch eine zweite Implementierung \u00fcber den Weg, die sogar Archive erstellen kann: <a href=\"http:\/\/jszip.stuartk.co.uk\/\">JSZip<\/a>. Scheint auf den ersten Blick auch sehr brauchbar zu sein, vielleicht erg\u00e4nze ich den Post noch etwas]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unzippen mit Javascript? Wer sollte sowas wollen? Egal! Es geht, reicht das als Begr\u00fcndung? Und das garnicht mal so schlecht. Wie \u00fcblich schmei\u00dfe ich gleich mit Code um mich: &lt;script src=&quot;ZipFile.complete.js&quot;&gt;&lt;\/script&gt; &lt;script&gt; var zipFile = new ZipFile(&quot;zipfile.zip&quot;, readingDoneCallback); function readingDoneCallback(zip) &hellip; <a href=\"https:\/\/d-mueller.de\/blog\/zip-archive-entpacken-mit-javascript\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,8,3],"tags":[],"class_list":["post-520","post","type-post","status-publish","format-standard","hentry","category-javascript","category-quicktips","category-webdev"],"_links":{"self":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts\/520","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/comments?post=520"}],"version-history":[{"count":0,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts\/520\/revisions"}],"wp:attachment":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/media?parent=520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/categories?post=520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/tags?post=520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}