vue+element+axios下载zip文件接收二进制,区分其他返回类型进行错误提示

import request from '@/router/axios';
import {baseUrl,baseUrlNew} from '@/config/env';
import { Message, Loading } from 'element-ui'

/**
 * 下载压缩包
 */
export const downloadZipGener = (params, url) => {
  let loadingInstance = Loading.service({
    text: "正在下载数据,请稍候...",
    background: "rgba(0, 0, 0, 0.7)",
  });
  return request({
    url: baseUrl + url + params,
    method: "get",
    responseType: "blob",
  })
    .then((res) => {
      if (res.data.type == "application/json") {
        const reader = new FileReader();
        reader.readAsText(res.data, "utf-8");
        reader.onload = function () {
          const { data } = JSON.parse(reader.result);
          //弹出错误提示
          Message({
            message: data,
            type: "warning",
            dangerouslyUseHTMLString: true,
          });
        };
      } else {
        const blob = new Blob([res.data], {
          type: "application/zip",
        });
        let link = document.createElement("a");
        let body = document.querySelector("body");
        link.href = window.URL.createObjectURL(blob);
        link.style.display = "none";
        const headerFilename = res.headers["content-disposition"]
          ?.split(";")[1]
          .split("=")[1];
        const fileNameHeader = decodeURIComponent(headerFilename);
        link.download = fileNameHeader;
        body.appendChild(link);
        link.click();
        body.removeChild(link);
        window.URL.revokeObjectURL(link.href);
      }
      loadingInstance.close();
    })
    .catch((err) => {
      console.log(err);
      loadingInstance.close();
    });
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值