6 个回答
axios
  .get('/captcha', {
    params: param,
    responseType: 'arraybuffer'
  })
  .then(response => new Buffer(response.data, 'binary').toString('base64'))
  .then(data => {
    $('#img').attr('src', data);
  });

// 浏览器中好像没有Buffer,改成这样:
axios
  .get('/captcha', {
    params: param,
    responseType: 'arraybuffer'
  })
  .then(response => {
    return 'data:image/png;base64,' + btoa(
      new Uint8Array(response.data)
        .reduce((data, byte) => data + String.fromCharCode(byte), '')
    );
  }).then(data => {
    ...
  })

直接把img标签的src指向这个接口,然后在img上绑定点击事件,点击的时候更改src的地址(在原来的接口地址后面加上随机数即可)

直接写到img的src上去就行了

服务端 返回图片资源,HTTP头部,资源类型为图片

碰到一样的问题,因为返回的是数据!直接在url里填要请求的地址就行了,刷新验证码可以用uuid这个包

建议使用直接把img标签的src指向这个接口,不然使用下面的代码会有浏览器兼容问题

 return 'data:image/png;base64,' + btoa(
      new Uint8Array(response.data)
        .reduce((data, byte) => data + String.fromCharCode(byte), '')
);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题