后台返回blob数据转JSON时遇到的问题

查询如何将后台二进制转为Blob对象的时候,统一说法就是在请求的时候添加 responseType:'blob',从而拿到的数据就是blob对象

(1)如果不在请求中设置responseType: 'blob' 文件流可以正常下载,但是打开excel时会报错。我们下载的文件是有问题的。
   所以我们必须在请求中设置responseType: 'blob' 

(2)这时候就来了另外一个问题。
    加了responseType: 'blob' 之后,原本正确场景返回的json数据被改成了blob数据了。  
    所以我们要针对返回的数据做不同的处理。  
    正确时我们需要将blob数据转为json数据(type值为:application/json,以此作为判断条件)
    // 如果返回的是json格式,将blob数据转为json数据。
    if (res.data.type === 'application/json') {
         let reader = new FileReader()
         reader.readAsText(res.data, 'utf-8')
         reader.onload = (e) => {
         // JSON.parse(reader.result) 转译后的json数据
          res.data = JSON.parse(reader.result)
          // 处理相关逻辑...
      } else {
       // 文件流,下载文件逻辑...
     } 


 

posted @ 2022-09-19 19:40  40度丶仰望  阅读(1234)  评论(0编辑  收藏  举报