下载文件并重命名文件名称

话不多说,直接上菜,请各位大佬提出不同意见

/**
 * @filename  自定义的文件名
 * @url  下载地址
 */
export function renameDownloadFile(filename,url){
  // 获取文件
  getBlob(url).then(blob => {
    // 保存文件
    saveAs(blob, filename);
  })
}
// 重命名下载
export function getBlob(url) {
  // 创建Promise对象
  return new Promise(resolve => {
    // 创建XMLHttpRequest对象
    const xhr = new XMLHttpRequest();
    // 设置请求方式
    xhr.open('GET', url, true);
    // 设置响应类型
    xhr.responseType = 'blob';
    // 当请求完成时,触发onload事件
    xhr.onload = () => {
      // 如果响应状态码为200,则解析响应
      if (xhr.status === 200) {
        resolve(xhr.response);
      }
    };
    // 发送请求
    xhr.send();
  });
}
export function saveAs(blob, filename) {
  // 如果支持msSaveOrOpenBlob方法,则使用msSaveBlob方法保存文件
  if (window.navigator.msSaveOrOpenBlob) {
    navigator.msSaveBlob(blob, filename);
  } else {
    // 创建a标签
    const link = document.createElement('a');
    // 获取body元素
    const body = document.querySelector('body');
    // 设置a标签的href属性
    link.href = window.URL.createObjectURL(blob);
    // 设置a标签的download属性
    link.download = filename;
    // 当a标签被点击时,触发onclick事件
    // fix Firefox
    link.style.display = 'none';
    body.appendChild(link);

    // 点击a标签,触发onclick事件
    link.click();
    // 销毁a标签
    body.removeChild(link);
    // 释放a标签的href属性
    window.URL.revokeObjectURL(link.href);
  }
}

你可能感兴趣的:(javascript)