php 压缩图片-PHP(gzdeflate/gzinflate)+JS(pako)前端数据压缩

2023-08-26 0 515 百度已收录

上一篇文章我们介绍了PHP压缩功能的使用php 压缩图片,但只讲了服务相关的应用。 今天我们结合后端来实现数据压缩传输。

服务器通常会对客户端上传的数据进行限制,例如:限制请求体的大小、限制key的数量等。

如果我们压缩数据并将其发送回服务器,我们可以避免许多限制。

今天我们就结合后端来练习数据压缩和传输!

服务器压缩:

php 压缩图片-PHP(gzdeflate/gzinflate)+JS(pako)前端数据压缩

服务器压缩功能共有三种。 如果不明白的话可以看我之前的文章【PHP压缩函数总结及实际应用】。 这是 [gzinflate] 的示例:

base64_encode(gzdeflate('待压缩的内容'))

注意:要压缩的内容必须是字符串,并且压缩后的内容必须经过base64编码,防止出现其他问题

前端解压

php 压缩图片-PHP(gzdeflate/gzinflate)+JS(pako)前端数据压缩

由于服务器返回的数据是base64格式的,所以我们需要解码base64:

// base64字符串转为uint8array数组
function base64ToUint8Array(base64String) {
  let padding = '='.repeat((4 - base64String.length % 4) % 4);
  let base64 = (base64String + padding)
    .replace(/-/g, '+')
    .replace(/_/g, '/');
  let rawData = window.atob(base64);
  let outputArray = new Uint8Array(rawData.length);
  for (var i = 0; i < rawData.length; ++i) {
    outputArray[i] = rawData.charCodeAt(i);
  }
  return outputArray;
}

Base64解码后,可以使用[pako]解压前端需要安装[pako]扩展:

npm install pako

php 压缩图片-PHP(gzdeflate/gzinflate)+JS(pako)前端数据压缩

安装解压扩展后,我们可以使用[pako]来解压:

pako.inflateRaw(base64ToUint8Array(res.data.description),{to:'string'})

前端压缩数据

上面我们已经实现了服务器端压缩数据php 压缩图片,客户端解压数据。 但客户端还没有实现数据压缩,服务器对数据进行解压。

php 压缩图片-PHP(gzdeflate/gzinflate)+JS(pako)前端数据压缩

首先使用[pako]对压缩数据进行扩展:

pako.deflateRaw('压缩的内容', {to:'string'})

获取压缩数据后,将数据转换为base64格式,并以base64格式上传数据:

// uint8array转为base64字符串
function uint8arrayToBase64(u8Arr) {
  return window.btoa(u8Arr);
}
//数据压缩并将压缩后的内容转base64编码
uint8arrayToBase64(pako.deflateRaw('压缩内容', {to:'string'}))

php 压缩图片-PHP(gzdeflate/gzinflate)+JS(pako)前端数据压缩

服务器解压

该服务接受base64格式的数据,因此我们需要先对其进行基本解码,然后再解压缩数据:

gzinflate(base64_decode('客户端数据'))

最后将数据存储在服务中,这就完成了服务端和后端的结合,实现数据的压缩和解压

如有遗漏或错误,请在我的公众号留言。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php php 压缩图片-PHP(gzdeflate/gzinflate)+JS(pako)前端数据压缩 https://www.wkzy.net/game/164938.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务