export default async function download()

in src/utils/download.js [27:63]


export default async function download(url, options) {
  const defaultOptions = {
    method: "GET",
  };

  const newOptions = { ...defaultOptions, ...options };

  // add token
  let token = window.sessionStorage.getItem("token");
  if (token) {
    if (!newOptions.headers) {
      newOptions.headers = {};
    }
    newOptions.headers = { ...newOptions.headers, "X-Access-Token": token };
  }
  try {
    const response = await fetch(url, newOptions);
    const disposition = response.headers.get("Content-Disposition");
    const filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
    const matches = filenameRegex.exec(disposition);
    let filename = "download";
    if (matches != null && matches[1]) {
      filename = matches[1].replace(/['"]/g, "");
    }

    const blob = await response.blob();

    const a = document.createElement("a");
    a.href = URL.createObjectURL(blob); // use blob obj to create URL
    a.download = filename; // use the file name from backend
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
  } catch (error) {
    throw new Error(`下载文件失败:${error}`);
  }
}