前端Vue2.6.10数据压缩(zlib/pako)和解压(zlib/pako),后端Python3.7数据压缩(zlib)和解压(zlib)

(注:前后端压缩都加上了base64;文章所提及的压缩和解压仅仅针对数据,不是文件。)

一、前端Vue2.6.10两种压缩和解压的方式(zlib模块和pako模块)

1.zlib模块和pako模块(建议使用zlib就行)

①.导入zlib、pako、iconv-lite

npm install zlib
//只使用zlib的方式,下面的包不用下载
npm install pako
npm install iconv-lite

②.解压函数(可解压前端压缩的数据,也可解压python后端解压的数据)

import Zlib from 'zlib'
import iconv from 'iconv-lite'
import pako from 'pako'

zlib_unzip(info){
  // zlib解压
  var buffer = new Buffer(info, 'base64')
  var inflate = Zlib.inflateSync(buffer)
  return inflate.toString()
}

pako_unzip(info){
  // pako解压:可以解压前后端使用zlib压缩的数据
  let charData = atob(data).split('').map(function (x) { return x.charCodeAt(0); });
  let binData = new Uint8Array(charData);
  return pako.inflate(binData,{to: 'string'});
}

③.压缩函数

import Zlib from 'zlib'
import iconv from 'iconv-lite'
import pako from 'pako'

zlib_zip(str){
    // zlib压缩
    var deflate = Zlib.deflateSync(str, {level: 9})
    return deflate.toString('base64')
}

pako_zip(str){
    // pako压缩(后端python不太好解压)
    return btoa(pako.gzip(str,{to: 'string'}));
    //下面加上iconv.encode可进行转码
    // return btoa(pako.gzip(iconv.encode(str,'gbk'),{to: 'string'}));
}

二、Python3.7使用zlib进行压缩和解压

1.zlib模块

①.解压函数(可解压Vue前端压缩的数据,也可解压后端解压的数据)和压缩函数

import zlib
import base64
from base64 import urlsafe_b64decode

# 压缩(base64转换)
def compress_infos(infos, level=9):
    if not isinstance(infos, bytes):
        infos = infos.encode(encoding='utf-8')
    compress_data = zlib.compress(infos, level)
    compress_data = str(base64.b64encode(compress_data)).lstrip("b").strip("'")
    return compress_data

# 解压(base64转换)
def decompression_infos(compress_data):
    infos = zlib.decompress(urlsafe_b64decode(compress_data)).decode('utf-8')
    return infos

三、总结。

前端Vue和Python后端数据交互的时候建议双方都使用zlib解压和压缩。当前端使用pako进行数据压缩时,在后端python解压时容易报zlib.error: Error -3 while decompressing data: incorrect header check的错误,不是特别好解决,所以前端也使用zlib。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值