微信小程序下载读取文件内容


const recoDir = wx.env.USER_DATA_PATH + '/recoDir/',
      FSM = wx.getFileSystemManager();
downloadFile(url){
      let _this = this;
      try{
        FSM.accessSync(recoDir);
        FSM.rmdirSync(recoDir,true);
        FSM.mkdirSync(recoDir);
      } catch(err) {
        FSM.mkdirSync(recoDir);
      }
      return new Promise((resolve,reject) => {
        var filename = new Date().getTime();
        wx.downloadFile({
          url: url,
          success(file){
            const fileType = url.split('.').pop();
            FSM.saveFileSync(file.tempFilePath,recoDir + filename);// 保存文件到本地
            // console.log(wx.canIUse('FileSystemManager.readZipEntry'));
            if (fileType === 'zip') {
              const version = wx.getSystemInfoSync().SDKVersion;
              console.log(version)
              if (_this.compareVersion(version,'2.17.3') >= 0) {
                FSM.readZipEntry({
                  filePath: recoDir + filename,
                  entries: 'all',
                  success(data){
                    resolve(data.entries.filename.data);// data.entries中包含多个文件的数据,.filename是筛选出其中某个文件的数据
                  }
                })
              } else {
                const newName = new Date().getTime();
                FSM.unzip({
                  zipFilePath: recoDir + filename,
                  targetPath: recoDir + newName,
                  success(d){ 
                    // const list = FSM.readdirSync(recoDir);
                    // const list2 = FSM.readdirSync(recoDir + newName);
                    // console.log('list',list,list2)
                    const data = FSM.readFileSync(recoDir + newName + '/idx.data');// idx.data是解压缩文件夹中的某个文件名
                    resolve(data);
                  },fail(err){
                    console.log('err',err)
                  }
                });
              }
              
            } else {
              const data = FSM.readFileSync(recoDir + filename);
              resolve(data);
            }
          },
          fail(err){
            console.log('文件下载失败')
            reject(err);
          }
        })
      })
    },
    compareVersion(v1, v2) {
      v1 = v1.split('.')
      v2 = v2.split('.')
      const len = Math.max(v1.length, v2.length)
    
      while (v1.length < len) {
        v1.push('0')
      }
      while (v2.length < len) {
        v2.push('0')
      }
    
      for (let i = 0; i < len; i++) {
        const num1 = parseInt(v1[i])
        const num2 = parseInt(v2[i])
    
        if (num1 > num2) {
          return 1
        } else if (num1 < num2) {
          return -1
        }
      }
    
      return 0
    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值