js直接下载附件和通过blob数据类型下载文件

js下载文件方式有使用a标签的,也有直接用window.open的,还有用form表单的;这里采用的是a标签的下载方式,一种是url直接下载,另一种是文件的blob数据类型进行下载。
文件blob数据类型的获取一般是后端返回文件的二进制流,前端通过请求工具获取为blob数据类型进行下载;也可以这直接通过ajax或fetch等将url转化为blob数据类型,一些特殊的附件直接通过url下载,浏览器可能会将其打开,如:pdf。

话不多说直接上代码:

一、url直接下载文件

/**
 * 文件url直接下载
 * @param {String} path 下载链接
 * @param {*} fileName 下载文件名称, 无文件名默认取url后面名称
 */
const downloadUrl = (path, fileName) => {
  if(!path) return;
  const a = document.createElement("a");
  a.setAttribute("href", path);
  a.setAttribute("download", fileName);
  a.setAttribute("target", "_blank");
  const clickEvent = document.createEvent("MouseEvents");
  clickEvent.initEvent("click", true, true);
  a.dispatchEvent(clickEvent);
};

二、文件blob数据类型下载文件

/**
 * 文件blob数据格式进行下载
 * @description 文件下载
 * @param {String} blob  文件blob数据
 * @param {String} fileName 下载文件名
 */
const downloadBlobUrl = function (blob, fileName = "") {
  if (!blob) return;
  if ("download" in document.createElement("a")) {
    // 非IE下载
    let link = document.createElement("a");
    if (window.URL) {
      link.href = window.URL.createObjectURL(blob);
    } else {
      link.href = window.webkitURL.createObjectURL(blob);
    }
    link.download = fileName;
    document.body.appendChild(link);
    link.click();
    link.remove();
  } else {
    // IE10+下载
    navigator.msSaveBlob(blob, fileName);
  }
};

需要的上方自取,有疑问或者其他问题欢迎评论沟通,也可加wx沟通账号与用户名一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值