Axios
//定义公共方法,下载Excel
download(url,data,fileName) {
return axios({
method: 'post',
url,
// headers里面设置token
headers: {
"token":getToken()
},
data,
// 二进制流文件,一定要设置成blob,默认是json
responseType: 'blob'
}).then(res => {
const link = document.createElement('a')
const blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
link.style.display = 'none'
link.href = URL.createObjectURL(blob)
link.setAttribute('download',fileName)
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
})
}
//直接调用
api.download("/mbfile/backstage/vipListDown",this.exportMenberData,'个人会员.xlsx')
Ajax
//定义公共方法,下载图片,其中还手动做了个防抖
function download(){
document.getElementById('download').innerHTML = '正在下载,请稍后...'
$("#download").attr("disabled","disabled")
var url = setUrl+"memeber/mbfile/front/vipCertificateDown";
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);//get请求,请求地址,是否异步
xhr.responseType = "blob"; // 返回类型blob
xhr.setRequestHeader("token",window.localStorage.getItem("token"))
xhr.onload = function(data, textStatus, request) {// 请求完成处理函数
var blob = this.response;// 获取返回值
var a = document.createElement('a');
a.download = "会员证.jpg";
a.href = URL.createObjectURL(blob);
a.click();
document.getElementById('download').innerHTML = '下载会员证'
$("#download").removeAttr("disabled");
};
xhr.send();
}
//前端Button
<button type="button" class="standardBtn backBtn" id="download" onclick="download()">下载会员证</button>