封装一个公共的下载方法(下载方法不一,以下方法只是实现的其中一种)
this.$axios({
url:"*****",
reponseType:"blob",
method:"GET",
params:{参数名:参数值,参数名:参数值},
headers:{"Content-Type":"application/json"},
}).then(res => {
fileDownload('',1,res)
})
const fileDownload = function(fileName,type,result) {
if(!result){ return }
switch(type){
case 1:
fileName += ".docx"
break;
case 2:
fileName += ".xlsx"
break;
case 3:
fileName += ".pdf"
break;
case 4:
fileName += ".zip"
break;
case 5:
fileName += ".doc"
break;
case 6:
fileName += ".xls"
break;
default:
break;
}
/-----------------以下所有步骤可以直接写在.then方法里,封装只是为了提高复用性------------/
let url = window.URL.createObjectURl(new Blob([result.data]))
let link = document.createElement("a")
link.style.display = "none"
link.href = url
let contentDispositon = result.headers["content-disposition"]
if(contentDispositon) {
fileName = decodeURLComponent(contentDispositon.split("=")[1])
}
link.download = fileName
document.body.appendChild(link)
link.click()
link.remove()
}