后端返回文件流的数据形式
axios
.get('/getSecAuthCode', {
params: param,
responseType: 'arraybuffer'
})
.then(response => new Buffer(response.data, 'binary').toString('base64'))
.then(data => {
...
});
// 浏览器
axios
.get('/getSecAuthCode', {
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 => {
...
})
一定要设置 responseType,否则无法显示验证码
说明:
- WindowOrWorkerGlobalScope.btoa() 从 String 对象中创建一个 base-64 编码的 ASCII 字符串,其中字符串中的每个字符都被视为一个二进制数据字节。
- Uint8Array 数组类型表示一个8位无符号整型数组,创建时内容被初始化为0。创建完后,可以以对象的方式或使用数组下标索引的方式引用数组中的元素。
- 静态 String.fromCharCode() 方法返回使用指定的Unicode值序列创建的字符串。