第一步,先安装,npm install axios
第二步,如果需要那就在全局main.js引入(一般情况是都是用封装的),这里讲在某页面下按需引入
第三步,写下载按钮,点击下载时,进入这个方法
以下代码全在同一页面
<template>
<div>
<div @click='aaa'>点击下载</div>
</div>
</template>
<script>
import axios from 'axios'
export default {
methods: {
async aaa(){
const url = 'www.aaa.com'//后端给的接口
axios
.get(url,{
responseType: 'arraybuffer',//类型,具体看文章结尾
xsrfHeaderName: 'Authorization',//名字,看后端给的
headers: {
'Content-Type': 'application/json',//格式
token: 'asdfasdfasfasfsafas'//这个是登录用的token
}
})
.then(res => {
//成功后的操作
const blob = new Blob([res.data])//创建一个blob
const downloadElement = document.createElement('a')//创建一个a链接
const href = window.URL.createObjectURL(blob)//下载链接
const fileName = res.config.url.substring(res.config.url.lastIndexOf('/') + 1)//截取文件名+后缀
downloadElement.download = `${fileName}` // 下载后文件名
downloadElement.href = href//链接等于链接
document.body.appendChild(downloadElement)//将元素加在dom尾部
downloadElement.click()//点击a链接
document.body.removeChild(downloadElement)//点击完后删掉
window.URL.revokeObjectURL(href)//释放这个url内存
})
.catch(res => {
//失败后的操作
console.log('下载失败')
})
}
}
}
</script>
附加:responseType
是一个枚举字符串值,用于指定响应中包含的数据类型
链接XMLHttpRequest.responseType - Web API 接口参考 | MDN