1

前端请求后台文件的下载

方法一:

后台直接给了接口进行请求下载

由于通过ajax请求后台文件下载接口,无法向平时请求接口那个返回数据,而是直接请求接口浏览器就会自动下载文件,因此选择重新打开一个新页面,路径为拼接好的接口路径进行文件的下载。

let va = config.URL\_CNODEJS + '/bservice/duty/down/' + y + '/' + m; // 拼接地址+接口+参数  
window.open(va,"target") // 新页面打开

4.png

方法二:

获取对应的请求地址进行下载

当后台提前将文件下载地址放在了数据中,我们需要将文件下载的地址获取出来,自己创建链接进行打开下载操作。

// 文件下载  
download (val) {  
 if (val.path) { // val.path 为下载路径  
 let img = /.(png|jpg|jpeg|gif)$/g;  
 if (img.test(val.path)) { // 图片下载  
 let x = new XMLHttpRequest();  
 x.open('GET', val.path, true);  
 x.responseType = 'blob';  
 x.onload = (e) =>{  
 let url = window.URL.createObjectURL(x.response)  
 let a = document.createElement('a');  
 a.href = url  
 a.download = val.name  
 a.click()  
 }  
 x.send();  
 } else { // 普通文件下载  
 let link = document.createElement('a');  
 link.href = val.path;  
 link.download = val.name;  
 link.style.display = 'none';  
 document.body.appendChild(link);  
 link.click();  
 document.body.removeChild(link);  
 }  
 } else {  
 this.$message('没有文件可以下载');  
 }  
}

柴门闻犬吠
32 声望2 粉丝

敬所有悬而未决的人生