JSZip: Get content of file in zip from file input
Asked Answered
K

2

5

I want to get the content of a zip from input with JSZip. I can read the title of my file but how do I get the content

I tried with jQuery:

$('.upload-input').on('change', function($event) {
 var $file = $event.target.files[0];
 JSZip.loadAsync($file).then(function($content) {
  alert($content.files["css/style.css"].async('text'));
 })
});

return: [object Promise]

What can I do to get the plain text

JSFiddle: https://jsfiddle.net/jyuy7q6j/

THX!

Kos answered 24/10, 2016 at 16:31 Comment(0)
S
15

async, like loadAsync returns a Promise. Here you can chain them:

$('.upload-input').on('change', function($event) {
 var $file = $event.target.files[0];
 JSZip.loadAsync($file).then(function($content) {
  // if you return a promise in a "then", you will chain the two promises
  return $content.files["css/style.css"].async('text');
 }).then(function (txt) {
   alert(txt);
 });
});
Sternmost answered 25/10, 2016 at 16:59 Comment(1)
Oh, very easy :) ThanksKos
F
-1

I forgot about files[...].async, so here's my solution (with a little bit of traversing thru the file):

var worldChars = Array.from(zip.files["world.txt"]._data.compressedContent)
var world = ""
for (var ch of worldChars) {
    world += String.fromCharCode(ch)
}
Fatality answered 14/5, 2023 at 9:43 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.