下载 url 文件并重命名(通用型)

227 阅读1分钟

适用于任何文件的,通过文件 url 下载文件,并可以重命名。

export function downloadUrlFile(url: string, fileName: any) {
  const url2 = url.replace(/\\/g, '/');
  const xhr = new XMLHttpRequest();
  xhr.open('GET', url2, true);
  xhr.responseType = 'blob';
  xhr.setRequestHeader('Content-Type', 'application/json');
  xhr.setRequestHeader('Accept', 'application/json');
  xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');

  // 为了避免大文件影响用户体验,建议加loading
  xhr.onload = () => {
    if (xhr.status === 200) {
      // 获取文件blob数据并保存
      const urlObject = window.URL || window.webkitURL || window;
      // eslint-disable-next-line camelcase
      const export_blob = new Blob([xhr.response]);
      // createElementNS() 方法可创建带有指定命名空间的元素节点。
      // 此方法可返回一个 Element 对象。
      // eslint-disable-next-line camelcase
      const save_link = window.document.createElementNS(
        'http://www.w3.org/1999/xhtml',
        'a'
      );
      // eslint-disable-next-line camelcase
      save_link.href = urlObject.createObjectURL(export_blob);
      // eslint-disable-next-line camelcase
      save_link.download = fileName;
      // eslint-disable-next-line camelcase
      save_link.click();
    }
  };
  xhr.send();
}