收藏
回答

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

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

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





回答关注问题邀请回答
收藏

4 个回答

  • Pluto
    Pluto
    2022-11-29

    可能是因为你没有对接好,比如没有带token,或者其他问题,这些都会返回base64的值,只不过返回的有错,不能生成正确的二维码

    2022-11-29
    有用 1
    回复
  • 淼淼
    淼淼
    2019-09-05

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

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

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

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


    2019-09-05
    有用
    回复 9
    • July
      July
      2019-09-05

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

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

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

    2019-09-05
    有用
    回复 4
    • July
      July
      2019-09-05

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

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

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

      2019-09-05
      回复
    • Xs
      Xs
      2019-09-06回复July

      你可以排查一下:

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

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

      2019-09-06
      回复
登录 后发表内容
问题标签