Wrong header validation with pako.js

function loadFileAsBinary()
{
    var fileToLoad = document.getElementById("fileToLoad").files[0];

    var fileReader = new FileReader();

    fileReader.onload = function(fileLoadedEvent) 
    {
        var textFromFileLoaded = fileLoadedEvent.target.result;

        var rs       = textFromFileLoaded;

        var charData = rs.split('').map(function(x){return x.charCodeAt(0);}); 
        console.log(charData);

        var bindata  = new Uint8Array(charData);
        console.log(bindata);

        var plain    = pako.inflate(bindata, {to: 'string' });

        var strData  = String.fromCharCode.apply(null, new Uint16Array(plain));

        document.getElementById("inputTextToSave").value = strData;

    };

    fileReader.readAsBinaryString(fileToLoad);
}

      

I want to bloat the download file, but this function gives an error:

Incorrect header check

+3


source to share


1 answer


I was able to solve the same problem using r.readAsArrayBuffer(f);

and pako.inflate(new Uint8Array( e.target.result ) , {"to":"string"})

Here's my code:



function changeInputFile(evt){
    // Retrieve the first (and only!) File from the FileList object
    var f = evt.target.files[0];
    if (f) {
        let r = new FileReader();
        r.onload = function(e) {
            var contents = e.target.result;
            console.debug( "User layout file:\n"
                         + "name: " + f.name + "\n"
                         + "type: " + f.type + "\n"
                         + "size: " + f.size + " bytes\n"
                         )
            );
            try {
                let jsonContent = null;
                if ( f.type == "application/gzip" ) {
                    jsonContent=pako.inflate(new Uint8Array( e.target.result ) , {"to":"string"});
                } else {
                   // ...
                }
                // ...
            } catch(e) {
                console.error(e)
            }
        }
        r.readAsArrayBuffer(f); 
    } else {
        console.error("Failed to load file");
    }
}

      

0


source







All Articles