var inflator = new Zlib.InflateStream(); function handleFileSelect(evt) { var files = evt.target.files; // FileList object // files is a FileList of File objects. List some properties. var blob = null; for (var i = 0, f; f = files[i]; i++) { console.log(escape(f.name), f.type, f.size); blob = f.slice(0, 3980); console.log(blob); } var reader = new FileReader(); // If we use onloadend, we need to check the readyState. reader.onloadend = function(evt) { if (evt.target.readyState == FileReader.DONE) { // DONE == 2 console.log("RESULT:", new Uint8Array(evt.target.result)); var inflated = inflator.decompress(new Uint8Array(evt.target.result)); console.log(inflated); var resultBlob = new Blob([inflated]); console.log("rBlob", resultBlob); var f = new FileReader(); f.readAsText(resultBlob); f.onload = function(e) { console.log(e.target.result); }; } }; reader.readAsArrayBuffer(blob); //reader.readAsBinaryString(blob); } document.getElementById("files").addEventListener('change', handleFileSelect, false);