前端处理后台接口返回文件流方法记录

5 篇文章 0 订阅
3 篇文章 0 订阅

问题一

在我们的项目中,登录的时候有一个图形验证码功能,这个图形实际为一张后台返回的图片,通过get请求接口获取图片流。

问题一实现方法

  1. 将接口返回的数据设置成返回blob类型:responseType:‘blob’
axios({
    method:'get',
    url: url[urlStr],
    responseType:'blob'
}).then(response => {
    resolve(response)
}).catch(error => {
    reject(error)
})
  1. 将获取到的blob对象,生成base64
let a = new FileReader();
a.onload = function (e) {
    //e.target.result 就是图片的base64码
    // e.target.result
}
a.readAsDataURL(res);

问题二

前端通过接口请求,后台返回excel文档流,并下载到本地。

问题二实现方法

  1. 接口请求应答设置: responseType: ‘arraybuffer’
axios.post(url[urlStr], formData, { responseType: 'arraybuffer' })
.then(response => {
    resolve(response)
}).catch(error => {
    reject(error)
})
  1. 将获取到的文档流创建成blob对象,对象类型为’application/vnd.ms-excel’, 并通过a标签实现下载功能
axiosUpload(parmas, ajaxUrl).then((res) => {
    //res 为文档流
    if (res) {
        let url = window.URL.createObjectURL(new Blob([res], { type: 'application/vnd.ms-excel' })) //处理文档流
        let link = document.createElement('a')
        link.style.display = 'none'
        link.href = url
        link.download = fileName
        document.body.appendChild(link)
        link.click()
    } else {
        message.error('暂无数据,无法导出!')
    }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值