Pako 无法压缩 python 中生成的 gzip 文件
Pako not able to deflate gzip files generated in python
我正在使用以下代码从 python 生成 gzip 文件:(使用 python 3)
file = gzip.open('output.json.gzip', 'wb')
dataToWrite = json.dumps(data).encode('utf-8')
file.write(dataToWrite)
file.close()
但是,我正在尝试使用 Pako 库(我正在使用 Angular 2)在 Javascript 中读取此文件:
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 文件吗?
原来我需要使用 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";
});
我正在使用以下代码从 python 生成 gzip 文件:(使用 python 3)
file = gzip.open('output.json.gzip', 'wb')
dataToWrite = json.dumps(data).encode('utf-8')
file.write(dataToWrite)
file.close()
但是,我正在尝试使用 Pako 库(我正在使用 Angular 2)在 Javascript 中读取此文件:
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 文件吗?
原来我需要使用 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";
});