zip.js:无法识别文件格式,javascript

zip.js : File format is not recognized, javascript

我从 HTTP GET 请求中得到一个 zip 文件响应,其中包含另外两个扩展名为 .log 和 .out 的文件。我正在使用 zip.js 成功地从 .log 文件读取数据,但是当我尝试传递文本数据时,从 .log 文件读取,作为事件的参数,我得到错误:

"File Format is not recognized"

我在客户端执行此操作 javascript。

这是我的代码:

var xhr = new XMLHttpRequest();
xhr.onload = function(e) {
    var blobData = new Blob([this.response],{type : "application/zip"});
    zip.createReader(new zip.BlobReader(blobData), function(zipReader){
        zipReader.getEntries(function(entries){

                entries[1].getData(new zip.TextWriter(), function(text){
                        console.log(text);

                        this.Emit("dataReady", {
                            data : text});
                });
        }.bind(this));
    }.bind(this),this.onerror);
}.bind(this);

 xhr.open("GET","path/to/url/file.zip",true);
 xhr.setRequestHeader("Content-type","application/zip");
 xhr.responseType = 'blob';    
 xhr.send();

我得到的错误是:

无法识别文件格式。

请指教,因为我正在使用 zip.js 并从第一个 time.Thanks 的 http 请求读取 zip 文件响应!

你能验证一下你在这一行 this 使用的是正确的

this.Emit("dataReady", { data : text});

我不确定您在哪里发出文本,但您可能在错误的对象上调用了 Emit。如果是这种情况,那么请看一下这个 link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call 并做一些快速测试之类的事情。请注意,我注意到您已经绑定了 "this"

var xhr = new XMLHttpRequest();
var _root = this;
xhr.onload = function(e) {
    var blobData = new Blob([this.response],{type : "application/zip"});
    zip.createReader(new zip.BlobReader(blobData), function(zipReader){
        zipReader.getEntries(function(entries){

                entries[1].getData(new zip.TextWriter(), function(text){
                        console.log(text);

                        _root.Emit("dataReady", {
                            data : text});
                });
        }.bind(this));
    }.bind(this),this.onerror);
}.bind(this);