if (navigator.userAgent.indexOf("Trident") !== -1) {
window.navigator.msSaveOrOpenBlob(new Blob([res]), fileName)
} else {
const link = document.createElement("a")
link.href = window.URL.createObjectURL(new Blob([res]))
link.target = "_blank"
link.download = fileName
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
}
这个代码中的res是后端返回的blob流,( responseType: 'blob' ),我为啥不用a链接直接把后端下载的url放在href上,原因在于低版本火狐浏览器,文件名会乱码。window.URL.createObjectURL这个查看https://developer.mozilla.org/zhCN/docs/Web/API/URL/createObjectURL
基本功能思想就是拉取后端附件流,然后使用a链接下载,特殊的点在于href给的是一个DomString,不是一个url,用于文件下载重命名。