function unzip(b64Data){
var strData = atob(b64Data);
// Convert binary string to character-number array
var charData = strData.split('').map(function(x){return x.charCodeAt(0);});
// Turn number array into byte-array
var binData = new Uint8Array(charData);
// // unzip
var data = pako.inflate(binData);
// Convert gunzipped byteArray back to ascii string:
// strData = String.fromCharCode.apply(null, new Uint16Array(data));
array = new Uint16Array(data)
var res = '';
var chunk = 8 * 1024;
var i;
for (i = 0; i < array.length / chunk; i++) {
res += String.fromCharCode.apply(null, array.slice(i * chunk, (i + 1) * chunk));
}
res += String.fromCharCode.apply(null, array.slice(i * chunk));
strData = res
return strData;
}
// String.fromCharCode.apply 不能接受过长的数组,那么我们可以想到将数组进行拆分->解压->拼接。
解决pako.js解压过长(大)数据时报错的问题
最新推荐文章于 2023-12-13 08:36:46 发布