在项目中遇到一个需求,需要导出文件,以往的做法是使用location.href跳转,剩下的就直接交给后端就好了,但因为认证方式使用的是jwt,所以需要在请求的时候添加自定义http请求头,传统的方式不再适用。
- 实现逻辑详解,axios,在发起请求是添加配置项
responseType: 'arraybuffer'
指定返回值类型
2.将返回的二进制数据转为Bolb对象
3.将bolb对象转为 DataURL
4.利用a标签下载文件
const requestUse = (config) => {
if (!config) {
// eslint-disable-next-line
config = {
headers: {
Authorization: getToken(),
},
};
} else if (config.isLogin) {
return config;
} else if (!config.headers.Authorization) {
config.headers.Authorization = getToken();
}
return config;
};
request = axios.create({
baseURL: '',
});
request.interceptors.request.use(requestUse);
request.get(url, { params, responseType: 'arraybuffer', }).then((resp) => {
const