收藏
回答

生成小程序码接口返回一串乱码,怎么转换成图片或base64呢?

小程序接口返回的数据是一串乱码,如图所示,怎么转换成base64或者图片呢?目前采取的方法:

请求时设置responseType: "arraybuffer",拿到了二进制数据流,再使用wx.arrayBufferToBase64(data),转换出来的图片不显示。。。很奇怪,该怎么解决呢?





最后一次编辑于  09-05
回答关注问题邀请回答
收藏

3 个回答

  • 淼淼
    淼淼
    09-05

    小程序码都是叫后端兄弟生成的,我只需要一个url作为展示就好了,嘿嘿!

    09-05
    赞同
    回复 1
    • July
      July
      09-05
      我们现在不让后端生成url了,说后端生成url后,保存图片到服务器压力太大,高并发影响很大
      09-05
      回复
  • 笑君莫欺
    笑君莫欺
    09-05

    var base64 = wx.arrayBufferToBase64(res.data);

    that.setData({ imgurl: "data:image/PNG;base64," + base64 })


    09-05
    赞同
    回复 9
    • July
      July
      09-05

      试了,图片显示不出来的,我只是下面的setDate没有截图出来😫

      09-05
      回复
    • 笑君莫欺
      笑君莫欺
      09-05
      把你那个success:function({data})改成 success(res)
      09-05
      回复
    • 笑君莫欺
      笑君莫欺
      09-05
      还有你那个调用的地址对不对
      09-05
      回复
    • 笑君莫欺
      笑君莫欺
      09-05
      'https://api.weixin.qq.com/wxa/getwxacode?access_token=' + token
      09-05
      回复
    • July
      July
      09-05回复笑君莫欺
      改成res试了不行
      09-05
      回复
    查看更多(4)
  • Xiushan Li
    Xiushan Li
    09-05

    兄弟,让后端帮你处理buffer数据,再返给一个url

    09-05
    赞同
    回复 4
    • July
      July
      09-05

      之前是这样做的,但是现在要求后端不给生成url图片地址,只能前端转换😭😭

      09-05
      回复
    • Xiushan Li
      Xiushan Li
      09-05回复July
      兄弟,你要告诉他,这样不合理。如果base64数据很大,this.setData时性能上影响很大
      09-05
      回复
    • July
      July
      09-05回复Xiushan Li

      现在是后端解析成base64,可以了;但是又出现了新的问题了,如果传的path携带参数就生成错误的base64码,不带参数的path就可以

      09-05
      回复
    • Xiushan Li
      Xiushan Li
      09-06回复July

      你可以排查一下:

      1. 当服务端解析为base64数据的时候,就手动的copy到浏览器中,看是否正常显示;

      2. 可以自己写个前端的demo, 自己通过wx.request去请求生成二维码的接口,核查一下是否正常

      09-06
      回复
问题标签