howtoweb
howtoweb

Reputation: 359

JSZip: Get content of file in zip from file input

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!

Upvotes: 5

Views: 13393

Answers (2)

RixTheTyrunt
RixTheTyrunt

Reputation: 396

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)
}

Upvotes: -1

David Duponchel
David Duponchel

Reputation: 4059

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);
 });
});

Upvotes: 15

Related Questions