下载文件时Blob对象转为JSON对象

193 阅读1分钟

前提: 因为正常的请求返回的是blob流格式,异常情况后端接口会返回为json格式的报错信息

  if (res.type == 'application/json') {
      const reader = new FileReader();
      reader.onload = function () {
        const { message } = JSON.parse(reader.result); 
        notification.error({
          message: message,
          duration: 3,
        });
      };
      reader.readAsText(res);
    } else {
      resolve(res);
    }
    

先判断返回的结果的类型是json对象然后在转化为并且提示错误信息

    const blob = new Blob([res], { type: 'application/zip' });
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement('a');
    //获取当前时间的年月日时分秒
    var now = moment().format('YYYY-MM-DD HH:mm:ss');
    a.download = `合同模版导出_${now}.zip`;
    console.log(90, now);
    a.href = url;
    document.body.appendChild(a);
    a.click();
    

这是解析流并下载的方法