当前位置: 首页 > news >正文

vue2 使用axios 请求后台返回文件流导出为excel

目录

步骤 1: 安装 Axios

步骤 2: 创建 Axios 实例

步骤 3: 发起请求并处理文件流

说明


步骤 1: 安装 Axios

首先,确保项目中已经安装了 Axios。如果没有,可以通过以下命令进行安装:

npm install axios

步骤 2: 创建 Axios 实例

为了更好地管理 Axios 配置,可以创建一个 Axios 实例。例如,在 src 目录下创建一个 axiosInstance.js 文件:

import axios from 'axios';const axiosInstance = axios.create({baseURL: 'http://your-api-base-url.com', // 替换为你的后端 API 基础 URLresponseType: 'blob' // 设置响应类型为 blob
});export default axiosInstance;

步骤 3: 发起请求并处理文件流

在 Vue 组件中使用这个 Axios 实例发起请求,并处理返回的文件流以导出 Excel 文件。

例如,在 src/views/user/index.vue 文件中:

<template><div><button @click="downloadExcel">导出 Excel</button></div>
</template><script>
import axiosInstance from '@/axiosInstance';export default { methods: {async downloadExcel() {try {const response = await axiosInstance.get('api地址', {params: {//传入查询参数}});// 创建一个 blob 对象const blob = new Blob([response.data], { type: 'application/vnd.ms-excel' });// 创建一个链接元素const link = document.createElement('a');link.href = window.URL.createObjectURL(blob);link.download = 'exported-file.xlsx'; // 设置下载文件名link.click();// 释放 URL 对象window.URL.revokeObjectURL(link.href);} catch (error) {console.error('导出excel失败', error);}}}
};
</script>

说明

  1. 配置 Axios 实例:我们创建了一个 Axios 实例并将 responseType 设置为 blob,以便 Axios 将响应数据处理为文件流。

  2. 发起请求:在 downloadExcel 方法中,我们使用 axiosInstance.get 方法发起 GET 请求。如果需要传递查询参数,可以通过 params 选项传递。

  3. 处理文件流:请求成功后,我们将响应数据创建为一个 Blob 对象,并将其类型设置为 application/vnd.ms-excel。然后,我们创建一个临时的链接元素,设置其 href 属性为 Blob 对象的 URL,并调用 click 方法触发下载。下载完成后,释放 URL 对象以避免内存泄漏。

http://www.lryc.cn/news/420581.html

相关文章:

  • MATLAB数据可视化:在地图上画京沪线的城市连线
  • 【AI】CV基础1
  • 数据结构《栈》
  • 说一说mysql的having?和where有什么区别?
  • LeetCode45. 跳跃游戏 II
  • 算法打卡 Day19(二叉树)-平衡二叉树 + 二叉树的所有路径 + 左叶子之和 + 完全二叉树的节点个数
  • 国际以太网专线 (IEPL)/国际专线(IPLC)-全球覆盖,无界沟通
  • 信息安全管理知识体系攻略(至简)
  • HCIE学习笔记:IPV6 地址、ICMP V6、NDP 、DAD (更新补充中)
  • 人工智能】Transformers之Pipeline(九):物体检测(object-detection)
  • [SWPUCTF 2021 新生赛]easy_md5
  • Redis面试题大全
  • 【langchain学习】BM25Retriever和FaissRetriever组合 实现EnsembleRetriever混合检索器的实践
  • 【C语言】预处理详解(上)
  • uni-app内置组件(基本内容,表单组件)()二
  • linux搭建redis超详细
  • Flink-DataWorks第二部分:数据集成(第58天)
  • 4个从阿里毕业的P7打工人,当起了包子铺的老板
  • javaweb_07:分层解耦
  • 调用 Python 开源库,获取油管英文视频的手动或自动英文srt字幕,以及自动中文简体翻译srt字幕
  • UDP协议实现通信与数据传输(创建客户端和服务器)
  • 【红黑树】
  • 排序算法——简单选择排序
  • OpenAI API推出结构化输出功能
  • Python 异步编程:Sqlalchemy 异步实现方式
  • 父类引用指向子类对象
  • 分享一个基于Spring Boot的面向社区的智能化健康管理系统的设计与实现(源码、调试、LW、开题、PPT)
  • 【扒代码】reduction参数是什么
  • Python,Spire.Doc模块,处理word、docx文件,极致丝滑
  • redis的安装与命令