ajax请求设置responseType: blob类型、后端返回错误信息,前端需要进行错误提醒的处理方法

2,446 阅读1分钟

场景:在进行文件下载或者导出、通常接受blob二进制文件流、此时后端在某种情况下无法下载文件、需求前端进行错误处理。如果不对blob类型结果进行转化,前端无法进行错误信息获取。

返回错误消息,在控制台输出如下:

image.png

image.png 正常的文件流结果: image.png 为了能将错误消息进行展示,需要在请求获取到结果后判断data.type,如果是‘text/html’则将blob转化为json格式,然后进行错误提示即可。

    if (res.data.type === 'text/html') {
      let reader = new FileReader()
      reader.readAsText(res.data, 'utf-8')
      reader.onload = () => {
        const { msg } = JSON.parse(reader.result)
        Message({
          message: msg,
          type: 'error',
          duration: 5 * 1000
        })
      }
    } else {
      return res
    }