download () {
return request({
url: '/...',
method: 'get',
headers: { 'Content-Type': 'application/x-www-fofrm-urlencoded' },
responseType: 'blob'
})
}.then(res => {
const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }) // 把得到的结果用流对象转一下,第二个参数:查看浏览器的Content-Tyoe
const a = document.createElement('a') //创建一个<a></a>标签
a.href = URL.createObjectURL(blob) // 将流文件写入a标签的href属性值
a.style = 'display: none' // 藏起来a标签
a.download = '资产数据-'.concat(moment(new Date()).format('YYYY-MM-DD HH-mm-ss')) // //设置文件名
document.body.appendChild(a) // 将a标签追加到文档对象中
a.click() // 模拟点击了a标签,会触发a标签的href的读取,浏览器就会自动下载了
document.body.removeChild(a) // 一次性的,用完就删除a标签
})
常用的excel对应得mine-type类型:
1. "application/vnd.ms-excel"
2. "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
查看浏览器请求中content-type使用的是哪种mine-type