请求数据:
const downloadFile=()=>{
Axios({
url:'xxx',//接口地址
method:'',//请求方式
headers:{},//请求头
data //请求参数
}).then(res=>{
let reader=new FileReader()
const blob=new Blob([res.data])
reader.readAsText(blob)
reader.onload=e=>{
if(JSON.parse(e.target.result).status===200){
const fileName='附件名' //附件名包含附件类型
if('download' in document.createElement('a')){
console.log('下载成功')
let data=base64ToBlob(JSON.parse(e.target.result).dataInfo)
const link=document.createElement('a')
link.download=fileName
link.style.display='none'
link.href=URL.createObjectURL(data)
document.body.appendChild(link)
link.click()
URL.revokeObjectURL(link.href)
document.body.removeChild(link)
}else{
navigator.msSaveBlob(data,FileName)
}
}
}
})
}
将base64数据转为blob
const base64ToBlob=(code)=>{
const raw=window.atob(code)
const rawLength=raw.length
const uInt8Array=new Init8Array(rawLength)
for(let i=0;i<rawLength;i++){
uInt8Array[i]=raw.charCodeAt(i)
}
return new Blob([uInt8Array])
}