一般情况下,后台会提供下载链接,前台只需要使用location.href或者tag打开链接即可。当后端返回文件流时,前端使用blob对象读取流并使用a标签下载。axios({method:"get",url:this.downUrl,headers:{instuuid:sessionStorage.getItem("enterpriseUuid")},responseType:"blob"//设置接收格式为blob格式}).then(res=>{console.log("res:>>",res);constcontent=res.data;constblob=newBlob([content]);//构造一个blob对象来处理数据constfileName="Enterprise-levelconditionsItemlibrary.xlsx";//对于标签,只有Firefox和Chrome(内核)支持download属性//IE10及以上支持blob但仍然不支持downloadif("download"indocument.createElement("a")){//支持标签下载的浏览器constlink=document.createElement("a");//创建标签link.download=fileName;//给标签添加属性link.style.display="none";link.href=URL.createObjectURL(blob);document.body.appendChild(link);link.click();//执行下载URL.revokeObjectURL(link.href);//释放urldocument.body.removeChild(链接);//释放标签}else{//其他浏览器navigator.msSaveBlob(blob,fileName);}});
