美文网首页
二进制流下载及后台返回对象的报错信息展示问题

二进制流下载及后台返回对象的报错信息展示问题

作者: 辉色星空下 | 来源:发表于2024-04-14 17:09 被阅读0次

    正常在使用axios接口封装后。碰到需要下载文件的接口,我们都需要一个添加一个responseType: "blob"的参数,如果正常返回的话是没有问题的,但是如过报错,然后需要使用后端返回的提示信息,不能使用自己的提示信息那么修改如下:

     exportFile(res, headers,selfError) {
          if (Object.prototype.toString.call(res) === "[object Blob]") {
            const fileReader = new FileReader();
            fileReader.onload = function (e) {
              try {
                const blob = new Blob([res]);
                const fileName = headers["content-disposition"].match(
                  /filename="(\S*)"/
                )
                  ? headers["content-disposition"].match(/filename="(\S*)"/)[1]
                  : headers["content-disposition"].match(/filename="?(\S*)"?/)[1];
                // console.log(fileName);
                if (window.navigator && window.navigator.msSaveOrOpenBlob) {
                  navigator.msSaveBlob(blob, fileName);
                } else {
                  // return;
                  const elink = document.createElement("a");
                  elink.download = decodeURIComponent(fileName);
                  elink.style.display = "none";
                  elink.href = URL.createObjectURL(blob);
                  document.body.appendChild(elink);
                  elink.click();
                  URL.revokeObjectURL(elink.href); // 释放URL 对象
                  document.body.removeChild(elink);
                }
              } catch (err) {
                //这里是关键start
                //使用后台返回的错误信息
                if(selfError){
                  let errorMessage = JSON.parse(fileReader.result).message;
                  Message({
                    type: "warning",
                    message: errorMessage,
                  });
                //end
                }else{
                  //使用自定义的错误信息
                   Message({
                    type: "warning",
                    message: "导出失败",
                  });
                }
                  
               
              }
            };
            fileReader.readAsText(res);
          }
        },
    

    相关文章

      网友评论

          本文标题:二进制流下载及后台返回对象的报错信息展示问题

          本文链接:https://www.haomeiwen.com/subject/xxerxjtx.html