blob链接与base64链接如下
项目中三万条数据下载显示失败,所以选了第一种----代码中的 res 是后台返回的流文件。res.data是blob对象,包括size、type2字段与
export function loadFile(res) {
//后台返回的数据是--文件流的形式----
//通过请求头声明---responseType: 'blob'---获得blob格式数据,blob为--类文件对象,存储的是二进制数据流
//如果不想在请求头声明,可通过new Blob([二进制文件流],{type:''})//不推荐
const a = document.createElement('a')//第1种方式,createObjectURL生成blob链接
a.style.display = "none"
let dataUrl = URL.createObjectURL(res.data)
console.log(dataUrl)
let fileName = decodeURI(res.headers['content-disposition'].split(';')[1].split('=')[1])
document.body.appendChild(a)
a.href = dataUrl
a.download = fileName + '.xls';
a.click()
URL.revokeObjectURL(res.data);
document.body.removeChild(a)
//const reader = new FileReader()//第2种方式 FileReader生成base64的链接,正常导出没问题,3万条数据,下载显示失败了
//我的理解是href链接的内容,因为base64格式,字节太多,或者丢失或者不允许所以失败了
// reader.readAsDataURL(res.data)
// reader.onload = (e) => {
// const a = document.createElement('a')
// a.style.display = "none"
// let fileName = decodeURI(res.headers['content-disposition'].split(';')[1].split('=')[1]) // 文件名
// a.download = fileName
// console.log('e.target.resulte.target.result', e.target.result)
// a.href = e.target.result
// document.body.appendChild(a)
// a.click()
// document.body.removeChild(a)
// }
}