实现思路
下载任何文件的思路相同,只需配置相应的文件类型即可。
(1)使用 axios 从服务器获取文件的二进制数据;
(2)在 axios 中设置 responseType 为 blob,指定处理 二进制数据;
(3)通过创建 a 标签,设置 download 属性,实现点击下载。
import axios from 'axios'
// 通用下载方法
export function download(url, params, filename) {
return axios.post(url,params, {
responseType: 'blob'
}).then(async (res) => {
const { data, headers } = res
const blob = new Blob(
[data],
{type: 'application/msword;charset=UTF-8'} // 可以在这里指定要下载的文件类型
)
let dom = document.createElement('a')
let url = window.URL.createObjectURL(blob)
dom.href = url
dom.download = decodeURI(filename)
dom.style.display = 'none'
document.body.appendChild(dom)
dom.click()
dom.parentNode.removeChild(dom) // 下载完成移除元素
window.URL.revokeObjectURL(url) // 释放掉blob对象
})
}