前端请求后台文件的下载
方法一:
后台直接给了接口进行请求下载
由于通过ajax请求后台文件下载接口,无法向平时请求接口那个返回数据,而是直接请求接口浏览器就会自动下载文件,因此选择重新打开一个新页面,路径为拼接好的接口路径进行文件的下载。
let va = config.URL\_CNODEJS + '/bservice/duty/down/' + y + '/' + m; // 拼接地址+接口+参数
window.open(va,"target") // 新页面打开
方法二:
获取对应的请求地址进行下载
当后台提前将文件下载地址放在了数据中,我们需要将文件下载的地址获取出来,自己创建链接进行打开下载操作。
// 文件下载
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('没有文件可以下载');
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。