nodejs使用axios访问微信小程序getwxacodeunlimit接口批量生成小程序码保存本地方法...

使用axios访问接口,设置responseType: 'arraybuffer'

  /**
   * 获取小程序qrcode(不能设置 encoding: null,输出图片不能打开)
   * 设置responseType: 'arraybuffer'后成功输出图片
   * @param {String} page
   * @param {String} scene
   * @returns
   * @memberof GetQrCodeObj
   */
  getQrCode(page,scene,){
    return new Promise((resolve,reject)=>{
      axios.post('https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='+this.access_token,{
        scene:scene,
        page,
        is_hyaline:true
      },{
        responseType: 'arraybuffer'  // 关键在于设置responseType为'arraybuffer'
      }).then(res=>{
        let data = res.data
        if(data.errcode){
          reject(new Error('生成二维码失败'))
          return
        }
        dataFn.writeFileData(path.join(__dirname,'./dist/'+scene+'.png'),data).then(res=>{
          resolve(res)
        }).catch(err=>{
          reject(err)
        })
      }).catch(err=>{
        reject(err)
      })
    })
  }
复制代码

dataFn.writeFileData来源于我自己Promise封装的fs模块,在给表弟编写账本软件account-book中封装的方法 找到dataFn.js,dataFn.js还用到了dirExists.js

我在网上还找到了用request模块的方法,关键在于设置encoding: null,

/**
   * 获取小程序qrcode
   *
   * @param {String} page
   * @param {String} scene
   * @returns
   * @memberof GetQrCodeObj
   */
  getQrCode2(page,pack,name,){
    return new Promise((resolve,reject)=>{
        const params = {
          url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + this.access_token,
          method: "POST",
          json: true,
          encoding: null,  // 关键
          headers: {
              "content-type": "application/json",
          },
          body: {
              scene: scene,
              page,
              is_hyaline:true
          }
        }
        request(params, function(error, res, body) {
          if (!error && res.statusCode == 200) {
            dataFn.writeFileData(path.join(__dirname,'./dist/'+scene+'.png'),body).then(res=>{
              resolve(res)
            }).catch(err=>{
              reject(err)
            })
          } else {
            reject(error, body)
          }
      })
    })

  }
复制代码

转载于:https://juejin.im/post/5c19c46d6fb9a049d37f0af8

你可能感兴趣的:(nodejs使用axios访问微信小程序getwxacodeunlimit接口批量生成小程序码保存本地方法...)