如何实现“vue axios封装文件下载”
流程步骤
步骤 | 操作 |
---|---|
1 | 创建一个封装文件下载的axios实例 |
2 | 在Vue组件中引入封装的axios实例 |
3 | 发起文件下载请求 |
具体操作步骤
步骤一:创建一个封装文件下载的axios实例
// 创建axios实例
import axios from 'axios';
const downloadAxios = axios.create({
baseURL: '', // 设置请求的基础url
responseType: 'blob', // 设置响应数据的类型为二进制流
});
// 拦截器处理文件流数据
downloadAxios.interceptors.response.use((response) => {
const fileName = response.headers['content-disposition'].split('=')[1]; // 获取文件名
const url = window.URL.createObjectURL(new Blob([response.data])); // 创建一个临时url
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', fileName); // 设置下载文件的名称
document.body.appendChild(link);
link.click();
});
export default downloadAxios;
步骤二:在Vue组件中引入封装的axios实例
import downloadAxios from '@/utils/downloadAxios'; // 引入封装的axios实例
export default {
methods: {
downloadFile() {
downloadAxios.get('/download/file') // 调用封装的axios实例的get方法
.then((res) => {
console.log('文件下载成功');
})
.catch((error) => {
console.error('文件下载失败');
});
},
},
};
步骤三:发起文件下载请求
<template>
<div>
<button @click="downloadFile">下载文件</button> <!-- 点击按钮触发下载文件方法 -->
</div>
</template>
序列图
sequenceDiagram
participant VueComponent
participant AxiosInstance
VueComponent->>AxiosInstance: 发起文件下载请求
AxiosInstance->>AxiosInstance: 拦截器处理文件流数据
AxiosInstance-->>VueComponent: 返回响应数据
通过以上步骤,你就可以实现在Vue项目中使用封装的axios实例来下载文件了。希望对你有所帮助!如果有任何疑问,欢迎随时向我提问。