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

js下载文件方式有使用a标签的,也有直接用window.open的,还有用form表单的;这里采用的是a标签的下载方式,一种是url直接下载,另一种是文件的blob数据类型进行下载。

文件blob数据类型的获取一般是后端返回文件的二进制流,前端通过请求工具获取为blob数据类型进行下载;也可以这直接通过ajax或fetch等将url转化为blob数据类型,一些特殊的附件直接通过url下载,浏览器可能会将其打开,如:pdf。

话不多说直接上代码:

一、url直接下载文件

javascript 复制代码
/**
 * 文件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数据类型下载文件

javascript 复制代码
/**
 * 文件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沟通账号与用户名一致

相关推荐
nrsc10 天前
[实用小代码java]-如何将对象存储服务器上的文件下载到客户端
java·服务器·oss·文件下载·octet-stream
太自由1 个月前
SpringMVC之 文件上传和下载
spring·springmvc·resource·文件上传下载·文件下载·springmvc文件
trayvontang1 个月前
JavaScript下载文件(简单模式、跨域问题、文件压缩)
jszip·js文件下载·文件下载跨域·javascript文件下载·跨域设置·oss跨域设置·js文件压缩
bobo-rs3 个月前
Go语言操作文件上传和下载应用教程
开发语言·golang·iphone·文件上传·文件下载·go文件
代码星辰4 个月前
功能实现——通过阿里云 OSS 实现文件管理
阿里云·文件上传·oss·文件下载
yimtcode5 个月前
HTTP文件下载
http·文件下载·http下载
键盘被我撸冒烟了7 个月前
SpringMVC中的文件上传和中英文名称文件下载
java·eclipse·mvc·异常处理·文件上传·文件下载
谷哥的小弟8 个月前
Spring MVC文件下载配置
配置·spring mvc·状态码·响应头·responseentity·httpheaders·文件下载
千寻物语10 个月前
Angular封装HttpClient文件下载
angular.js·httpclient·文件下载