将.zip的地址转换成json数据

外国的npm 有详细的介绍,看不懂的可以看看我的代码

下载依赖   npm install unzip


 

unzipUrl(file_url) {
      var unzip = require('unzip-js')
      return new Promise((resolve, reject) => {
        unzip(file_url, function (err, zipfile) {
          if (err) {
            reject(err)
            return
          }
          zipfile.readEntries(function (err, entries) {
            if (err) {
              reject(err)
              return
            }

            entries.forEach(function (entry) {
              zipfile.readEntryData(entry, false, function (err, readStream) {
                if (err) {
                  reject(err)
                  return
                }
                let jsonstring = ''
                readStream.on('data', function (chunk) {
                  for (const code of chunk) {
                    jsonstring += String.fromCharCode(code)
                  }
                })
                readStream.on('error', function (err) {
                  reject(err)
                })
                readStream.on('end', function () {
                  // console.log('end json is :')
                  // console.log(jsonstring)
                  console.log('json data (unzipped) :')
                  let jsondata = JSON.parse(jsonstring)
                  console.log(jsondata)
                  resolve(jsondata)
                })
              })
            })
          })
        })
      })
    },
    async loadUrlContent(file_url) {
      console.log(`loading file url : ${file_url}`)
      let jsondata = null
      if (file_url.endsWith('.zip')) {
        console.log('zip data:')
        jsondata = await this.unzipUrl(file_url)
        this.readJsonData(jsondata)
      } else {
        const resp = await this.$axios.get(file_url)
        jsondata = resp.data
        this.readJsonData(jsondata)
      }
      console.log(`url loaded`)
    },
    readJsonData(jsondata) {
      for (let i = 0; i < jsondata.items.length; i++) {
        if (i <= 19) {
          this.items.push(jsondata.items[i])
          if (jsondata.head.images) {
            this.images.push(jsondata.head.images[i])
          }
        }
      }
    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值