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

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

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

我希望的结果是这种:

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

回答

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

);

以上是 【Vue】vue项目,axios请求图形验证码接口,接口返回的是文件流的形式,求教,如何转换成图片? 的全部内容, 来源链接: utcz.com/a/72782.html

回到顶部