vue项目,axios请求图形验证码接口,接口返回的是文件流的形式,求教,如何转换成图片?

clipboard.png

clipboard.png

我希望的结果是这种:

clipboard.png

回答:

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), '')
);

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注