Axios发送post请求下载文件(重写二进制流文件)
用axio正常发送请求下载excel会出现以下问题,即将二级制流文件下载到了本地,下附解决办法:
importData(){
let that=this;
this.$http.post(this.dataUrl+'/statistics/data/downOperationReportForms',{
//参数(随便写)
},{responseType: 'blob' }).then(function(res) {
//将二进制流文件写入excel表,以下为重要步骤
var blob = new Blob([res.data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'}); //application/vnd.openxmlformats-officedocument.spreadsheetml.sheet这里表示xlsx类型
var downloadElement = document.createElement('a');
var href = window.URL.createObjectURL(blob); //创建下载的链接
downloadElement.href = href;
downloadElement.download = '运营报告.xlsx'; //下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放掉blob对象
}).catch(function(err) {
if (err.response) {
console.log(err.response);
}
})
},