首先,要有下载按钮
<a download onClick={()=> downloadAttentment(data)}>下载</a>
其次,定义下载function
 
// 此处去处理 blob 对象
const downloadStreamByATag = (data, suffix, name) => {if (suffix === void 0) { suffix = 'xls'; }if (name === void 0) { name = '导出文件'; }if (data.type) {var blob = new Blob([data]);var fileName = name + "." + suffix;if ('download' in document.createElement('a')) { // 非IE下载var elink = document.createElement('a');elink.download = fileName;elink.style.display = 'none';elink.href = URL.createObjectURL(blob);document.body.appendChild(elink);elink.click();URL.revokeObjectURL(elink.href); // 释放URL 对象document.body.removeChild(elink);}}
}// 发送请求
const downloadAttentment = (data)=> {return axios.post(url, data).then((res)=> {downloadStreamByATag(res 'xls', '名单') })
}
Blob
Blob对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成ReadableStream来用于数据操作。

Blob() 构造函数返回一个新的 Blob 对象。blob 的内容由参数 array 中给出的值串联而成
new Blob(array, options)参数
options[可选] 一个可以指定以下任意属性的对象:
type可选,MIME类型 默认值是空字符(“”)。
endings可选,非标准 默认值transparent会将换行符复制到blob中而不会改变它们。要将换行符转换为主机系统的本地约定,请指定值native。
URL.createObjectURL()
URL.createObjectURL()静态方法会创建一个DOMString,其中包含一个表示参数中给出的对象的URL。这个URL的生命周期和创建它的窗口中的document绑定。这个新的URL对象表示指定的File对象或Blob对象。参数 object
用于创建URL的File对象、Blob对象或者MediaSource对象。返回值
一个DOMString包含了一个对象URL,该URL可用于指定源object的内容。
URL.revokeObjectURL()
URL.revokeObjectURL()静态方法用来释放一个之前已经存在的、通过调用URL.createObjectURL()创建的URL对象。
当你结束使用某个URL对象之后,应该通过调用这个方法来让浏览器知道不用在内存中继续保留对这个文件的引用了。