翼度科技»论坛 编程开发 JavaScript 查看内容

js获取blob数据流中携带的msg消息

6

主题

6

帖子

18

积分

新手上路

Rank: 1

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

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

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

解:
        原来blob数据返回的数据无法直接在返回对象res中获取,需要将获取到的对象进行格式转换,后才能取到其中的后端返回的消息。
        请求成功发送,在 .then(res => {})中捕获要解析的对象  也可以在响应拦截器中做处理。
  1. // 这里是将这部分方法做了封装
  2. export default exportFile(res) {
  3.      //  判断是否存在要转换的对象 ,如果可以下载文件则 res.data.type = application/vnd.ms-excel
  4. ​          if (res.data.type == 'application/json') { // 下载文件失败
  5. ​            // 实例化 FileReader
  6. ​                const reader = new FileReader ()
  7. ​            //  读取目标对象 res ,结果用字符形式表达
  8. ​                reader.readAsText(res.data , 'utf-8')
  9.             // 读取完后会获得 reader.result 要转化为可读取的JS对象
  10.                 read.onload = function() {
  11. ​                    const {msg} = Json.parse(reader.result)
  12. ​                    // 弹出转换后的 错误提示
  13. ​                    Message.waring (msg)
  14.                 }
  15.                 return
  16. ​          }
  17. //   下方为下载方法
  18. //    下载: 获取文件名  
  19. ​    let fileName = decodeURIComponent(data.headers['content-disposition'].split('=')[1])
  20. ​    //  可以获取当前文件的一个内存URL
  21. ​    let objectUrl = URL.createObjectURL(new Blob([data.data]))
  22. ​    //   创建下载
  23. ​    const link = document.createElement('a')
  24. ​    link.download = fileName
  25. ​    link.href = objectUrl
  26. ​    link.click()
  27. }
复制代码
 结果:成功!!


来源:https://www.cnblogs.com/panwudi/p/17138458.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具