新手向,如何获取blob数据流中携带的msg消息

第一次发帖,仅作学习记录以供参考

前一段时间,在业务上碰到这么一个技术问题。

问题:后端返回的失败 blob 数据流, 前端如何捕获展示

        业务需求,需要后端控制文件下载频率,用户在短时间内不可以重复下载文件,并返回消息提示 (剩余 XX 秒)。前端需要把返回数据msg消息展示弹出

        数据在浏览器的响应里可以看到

但是在打印的 res 中却找不到对应的msg,也就没有办法将对应内容展示出来

后面查询翻看了其他大佬们的帖子,向同事请教找出解决方法

解:

        原来blob数据返回的数据无法直接在返回对象res中获取,需要将获取到的对象进行格式转换,后才能取到其中的后端返回的消息。

        请求成功发送,在 .then(res => {})中捕获要解析的对象  也可以在响应拦截器中做处理。

// 这里是将这部分方法做了封装
export default exportFile(res) {
     //  判断是否存在要转换的对象 ,如果可以下载文件则 res.data.type = application/vnd.ms-excel
​          if (res.data.type == 'application/json') { // 下载文件失败
​            // 实例化 FileReader
​                const reader = new FileReader ()
​            //  读取目标对象 res ,结果用字符形式表达
​                reader.readAsText(res.data , 'utf-8') 
            // 读取完后会获得 reader.result 要转化为可读取的JS对象
                read.onload = function() {
​                    const {msg} = Json.parse(reader.result)
​                    // 弹出转换后的 错误提示
​                    Message.waring (msg)
                }
                return
​          }

//   下方为下载方法
 //    下载: 获取文件名  
​    let fileName = decodeURIComponent(data.headers['content-disposition'].split('=')[1])
​    //  可以获取当前文件的一个内存URL
​    let objectUrl = URL.createObjectURL(new Blob([data.data]))
​    //   创建下载
​    const link = document.createElement('a')
​    link.download = fileName
​    link.href = objectUrl
​    link.click() 
}

 结果:成功!!

前端小白,第一次发帖。如果有什么问题还请多多指教 

        

        

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值