1.get传参
get传参下载的文件可以不用fetch命令,直接利用window.open(url)即可
举例:window.open(“http://www.xxx.yyy?id=1&name='张三‘“)
2.post传参
如果是提交表单 后端返回二进制流, 那么下载文件方法则为:
fetch(`http://www.xxx.yyy`, {
method: 'POST',
body:`id=1&name="张三"`,
headers: {
'Content-type': 'application/x-www-form-urlencoded',
// 'Authorization': token,//这里放你的token,不需要token可以不放
},
responseType: 'blob', //blob获取二进制流
}).then(res => {
return res.blob();
})
.then(blob => {
console.log('blob', blob)
let bl = new Blob([blob]);
let fileName = “张三” + ".xlsx"; //设置文件名,可以通过读取响应头中的content-disposition属性(如果有的话)获取后端传来的文件名
//下面就是下载文件的方法了,可以封装成一个函数
var link = document.createElement('a');//创建<a>标签
link.href = window.URL.createObjectURL(bl);//创建文件下载的URL
link.download = fileName;//下载的文件名
link.click();//设置点击下载
window.URL.revokeObjectURL(link.href);//清除URL
}).catch(err => {
console.log('error', error)
});
不同请求头post传参方式可见fetch不同请求的参数传递方法,感觉这个链接写的还蛮清楚的,我收获了许多。