我使用以下代码从python生成gzip文件:(使用python 3)
file = gzip.open('output.json.gzip', 'wb')
dataToWrite = json.dumps(data).encode('utf-8')
file.write(dataToWrite)
file.close()
但是,我现在正在使用Pako库在Javascript中读取这个文件(我使用的是角2):
this.http.get("output.json.gzip")
.map((res:Response) => {
var resText:any = new Uint8Array(res.arrayBuffer());
var result = "";
try {
result = pako.inflate(resText, {"to": "string"});
} catch (err) {
console.log("Error " + err);
}
return result;
});
但是我在控制台中得到了一个错误:unknown compression method
。我应该做些其他的事情来正确地膨胀gzip文件吗?
发布于 2017-12-07 05:10:57
结果表明,我需要使用res.blob()函数来获取真正的二进制数据,而不是res.arrayBuffer();然后将blob转换为数组缓冲区:
return this.http.get("output.json.gzip", new RequestOptions({ responseType: ResponseContentType.Blob }))
.map((res:Response) => {
var blob = res.blob();
var arrayBuffer;
var fileReader = new FileReader();
fileReader.onload = function() {
arrayBuffer = this.result;
try {
let result:any = pako.ungzip(new Uint8Array(arrayBuffer), {"to": "string"});
let obj = JSON.parse(result);
console.log(obj);
} catch (err) {
console.log("Error " + err);
}
};
fileReader.readAsArrayBuffer(blob);
return "abc";
});
https://stackoverflow.com/questions/47685090
复制相似问题