話不多說,直接上前端代碼
axios({ method: 'post', url: 'http://localhost:19090/exportUser',//這個是請求的地址 params: {//這個是請求的參數 email: this.email, startRegisterDate: this.registerStartTime, endRegisterDate: this.registerEndTime }, responseType: 'blob' }).then((res) => { console.log(res) const link = document.createElement('a') let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'}); link.style.display = 'none' link.href = URL.createObjectURL(blob); let num = '' for(let i=0;i < 10;i++){ num += Math.ceil(Math.random() * 10) } link.setAttribute('download', '用戶_' + num + '.xls') document.body.appendChild(link) link.click() document.body.removeChild(link) }).catch(error => { console.log(error) })
仔細看axios請求加了個responseType: 'blob'
配置,這是很重要的
我的項目因為請求頭里面需要加sessionId,所以需要用上面方法
如果是get請求,請求頭不需要額外加參數,直接 window.location.href='http://localhost:19090/exportUser?email='+email+"&start="+start ,打開一個地址即可
后續ie兼容修改請參考 https://www.cnblogs.com/ttjm/p/11661133.html