首页 > 其他分享 >前端使用pako对json串进行压缩,转成base64并且解压缩的过程

前端使用pako对json串进行压缩,转成base64并且解压缩的过程

时间:2024-11-08 14:10:04浏览次数:4  
标签:originalData pako const index base64 解压缩 compressedData let

 1 export function compressAndb64encode(originalData) {
 2   // 将字符串转换为字节序列
 3   const binaryString = encodeURIComponent(originalData)
 4   const charList = binaryString.split('')
 5   const binaryArray = charList.map(char => char.charCodeAt(0))
 6   // 压缩数据
 7   const compressed = pako.deflate(new Uint8Array(binaryArray))
 8 
 9   //解决图片过多即数据量过大时,会出现内存溢出的问题
10   const CHUNK_SIZE = 0x8000
11   let index = 0
12   const length = compressed.length
13   let result = ''
14   let slice = ''
15   while (index < length) {
16     slice = compressed.subarray(index, Math.min(index + CHUNK_SIZE, length))
17     result += String.fromCharCode.apply(null, slice)
18     index += CHUNK_SIZE
19   }
20   let compressedData = btoa(result)
21 
22   //let compressedData = btoa(String.fromCharCode.apply(null, compressed)) //
23   return compressedData
24 
25   /* const myUint8Array = pako.deflate(originalData, { to: 'string' })
26   const binary = myUint8Array.join(',')
27   const compressedData = btoa(binary)
28   return compressedData */
29 }
30 export function deCompressAndb64decode(compressedData) {
31   // 解压数据
32   const compressedBinary = atob(compressedData)
33   const compressedArray = compressedBinary
34     .split('')
35     .map(char => char.charCodeAt(0))
36 
37   const decompressed = pako.inflate(new Uint8Array(compressedArray))
38   const decompressedString = Array.from(decompressed)
39     .map(charCode => String.fromCharCode(charCode))
40     .join('')
41 
42   let originalData = decodeURIComponent(decompressedString)
43   return originalData
44 
45   /* const binary = atob(compressedData)
46   const myUint8Array = new Uint8Array(binary.split(','))
47   const decompressed = pako.inflate(myUint8Array, { to: 'string' })
48   return decompressed */
49 }

尤其要注意中间解决内存溢出的问题,搜索了有一阵时间才解决,以此记录下来,方便下次直接使用!!!

标签:originalData,pako,const,index,base64,解压缩,compressedData,let
From: https://www.cnblogs.com/yuwenjing0727/p/18534948

相关文章

  • python之base64与字符串互相转化
    importbase64defstring_to_base64(input_string:str)->str:"""将字符串转换为Base64编码。参数:input_string(str):要转换的字符串。返回:str:Base64编码后的字符串。"""#将字符串转换为字节byte_data=input_string......
  • [Uniapp] APP拍照后转换Base64上传
    组件(2选1):1.uni-file-picker:https://uniapp.dcloud.net.cn/component/uniui/uni-file-picker.html2.u-upload: https://uviewui.com/components/upload.html 思路:不想直接把图片存到数据库,因为想着图片是小文件,也不是重要文件,干脆存到数据库里就好了。因此,计划在前端......
  • .net文件转Base64
    看publicclassFileUtil{///<summary>///文件转换成Base64字符串///</summary>///<paramname="fileName">文件绝对路径</param>///<returns></returns>publicstaticStringFileToBase64(stringfil......
  • Base64编码原理
    Base64编码原理Base64作用目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行(或再次Base64)传输。Base64编码原理Base64的原理比较简单,每当我们使用Base64时都会......
  • txt数据转为pdf格式并使用base64解密输出
    使用该方法请注意:因为此方法使用了base64解密,需要保证txt中的数据首先用了base64加密,如果只是普通的二进制数据,该方法并不适用 第一步<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.24</versi......
  • 为什么在http协议中使用base64编码方式传输二进制文件
    相关:图解Base64实现原理并使用js实现一个简单的Base64编码器常用加密方法之Base64编解码及代码实现一直都知道在http协议中使用base64的方式传递二进制文件,虽然感觉不理解,但是也都从来没有探究过原因,今天突然看到这方面的资料,这才有了一些理解。PS:把带有图片的网页......
  • base64编码图片二进制数据后直接保存在html文件中
    相关内容:在markdown编辑器中嵌入base64图片看到一个帖子,那就是base64编码用来http服务中对二进制文件编码,那么可以不可以直接在html文件中使用base64编码后的字符串来表示图片呢,于是就有了本文的尝试。注意,这里使用的是markdown格式的图片插入链接格式,即\(![图片文字描述](图......
  • 【PYTHON】图片和base64互转实践
    目录1导入依赖2image_to_base643base64_to_image1导入依赖importbase64fromPILimportImageimportio2image_to_base64defimage_to_base64(image_path):"""将图片文件转换成Base64编码的字符串:paramimage_path:图片文件的路径:retu......
  • Linux压缩解压缩命令tar使用说明
    在Linux中,tar命令是常用的用于打包和压缩文件的工具。以下是关于它的压缩和解压命令的介绍:1、压缩文件1.1打包文件(不进行压缩):命令:tar-cvf目标文件名.tar源文件或目录例如:tar-cvfmyfiles.tarfile1.txtfile2.txtdirectory1,这会将file1.txt、file2.txt和directory1打包成......
  • SHA256加密-前端 中 HMAC-SHA256的base64加密 和 md5加密
    1、 HMAC-SHA256的base64加密首先npminstallcrypto-js--save项目中使用12345import CryptoJSfrom 'crypto-js';  consthash=CryptoJS.HmacSHA256(zhuan, 'secret');//第一个参数为转换的字符串第二个参数有很多种可能看需要转换的格式consthas......