js 下载网络文件到本地,根据url下载文件,下载本地文件

js下载网络文件到本地不建议使用a标签打开网页,不同浏览器会不兼容。下面介绍一个可以根据url下载文件到本地,并且自动生成随机名称的方法~

随机生成名称可以在统一页面多次导出文件且不会提示“文件已存”的情况,不需要的同学可以根据注释修改

// 文件下载,url为文件地址,可以为本地地址也可以为网络地址

function downloadFile(url) {

// 是否ie:fetch不支持ie
      if (isIE()) {
        window.open(url, '_blank')
        return
      }


//   不需要随机生成名字的
//   let filename = `你的文件名字.文件格式`;

  // 生成一个随机名称
  let filename = `${randomString(10)}.xls`;
  return fetch(url).then((res) =>
    res.blob().then((blob) => {
      let a = document.createElement("a");
      let url = window.URL.createObjectURL(blob);
      a.href = url;
      a.download = filename;
      a.click();
      window.URL.revokeObjectURL(url);
    })
  );
}

 

function isIE () { // ie?

      if (!!window.ActiveXObject || 'ActiveXObject' in window) { return true } else { return false }
    }



// 随机字符串
function randomString(len) {
  console.log(2);
  len = len || 32;
  var $chars =
    "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678"; /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
  var maxPos = $chars.length;
  var pwd = "";
  for (let i = 0; i < len; i++) {
    pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
  }
  return pwd;
}


原文链接:https://blog.csdn.net/NI_computer/article/details/117369179

posted @ 2022-05-10 20:15  我是前端QQ942031558  阅读(2986)  评论(0编辑  收藏  举报