Reputation: 359
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
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
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