当前位置: 代码迷 >> 综合 >> SpringBoot - 前后端大数据压缩传输 Gzip 解决方案(手动版)
  详细解决方案

SpringBoot - 前后端大数据压缩传输 Gzip 解决方案(手动版)

热度:51   发布时间:2024-02-28 12:40:02.0

前端代码

decode(encodedData) {var strData = atob(encodedData)// Convert binary string to character-number arrayvar charData = strData.split('').map(function(x) {return x.charCodeAt(0)})// Turn number array into byte-arrayvar binData = new Uint8Array(charData)// unzipvar data = pako.inflate(binData)strData = this.Utf8ArrayToStr(data)return strData
},
Utf8ArrayToStr(array) {var out, i, len, cvar char2, char3out = ''len = array.lengthi = 0while (i < len) {c = array[i++]switch (c >> 4) {case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:// 0xxxxxxxout += String.fromCharCode(c)breakcase 12:case 13:// 110x xxxx   10xx xxxxchar2 = array[i++]out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f))breakcase 14:// 1110 xxxx  10xx xxxx  10xx xxxxchar2 = array[i++]char3 = array[i++]out += String.fromCharCode(((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0))break}}return out
}
  • Utf8ArrayToStr 这个方法和网上很多的 Utf8Array 不同在于,这里还解决了URL中文乱码的问题噢~

 

后端代码

byte[] gzipService = ZipUtil.gzip((JSON.toJSONString(service)), "UTF-8");
return ResultUtil.buildSuccByData(service);
  • 后端这里使用了 Hutool 框架自带的方法。
  相关解决方案