微信小程序解压二进制流(压缩包)

前言:公司开发OTA升级下位机设备,需要后台上传压缩包,以流形式发送给小程序,试了很多办法终于得到了解决,废话不多直接上代码

第三方库:JSZip,因为需要解压文件所以我用的第三方库,需要的可以下载

一、引入zpi文件

        下载只需把jszip.min.js文件粘贴到项目中即可

// 获取文件系统管理器
const fs = wx.getFileSystemManager();
//引入zip文件
const JSZip=require('./jszip.min');

二、完整代码

// 获取文件系统管理器
const fs = wx.getFileSystemManager();
const JSZip=require('./jszip.min');
Page({
       onLoad: function (options) {
    api.get('/version/control/deviceName?deviceName='+'压力').then(res => {
      let list=JSON.parse(res.data.urls)
      console.log(list,'<<<=====json转换');
      list.map(item=>{
        if(item.includes('LXXD_L')){
          console.log('/user/operation/inputStream?path='+item);
          let arr={
            path:item
          }
          wx.request({
            url: 'http:xxxxx/user/operation/inputStream',
            method: 'POST',
            data:arr,
            responseType: 'arraybuffer', // 设置响应类型为 arraybuffer
            success: function(res) {
              const binaryData = res.data; // 获取二进制数据
              // 定义文件路径
                    const filePath = wx.env.USER_DATA_PATH + '/LXXD_L_ota_dual_bank.zip';
                    // 将二进制数据写入文件
                    fs.writeFile({
                      filePath,
                      data: binaryData,
                      encoding: 'binary',
                      success: () => {
                        // 读取文件
                        fs.readFile({
                          filePath,
                          encoding: 'binary', // 指定编码方式为 binary
                          success: (data) => {
                            // 解压文件
                            const zip = new JSZip();
                            zip.loadAsync(data.data, { binary: true }).then((zip) => {
                              // 遍历文件并输出
                              zip.forEach((relativePath, file) => {
                                //文件名字
                                console.log(`File ${relativePath}`);
                              });
                            });
                          },
                          fail: (err) => {
                            console.error('读取文件失败', err);
                          },
                        });
                      },
                      fail: (err) => {
                        console.error('写入文件失败', err);
                      },
                    });
            },
            fail: function(err) {
              // 处理请求失败的情况
            }
          });
        }
      })
    }).catch(arr => {
      console.log(arr, '<=====失败啦');
    })
  },
})

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值