当前位置: 首页 > 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 对象以避免内存泄漏。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PHP Objiect Injection
  • 大数据_SQL_5min访问达到100次的用户
  • DataLoader 的基本用法
  • go post请求,参数是raw json格式,response是固定结构。
  • 编程-设计模式 10:外观模式
  • 获取客户端真实IP
  • 以树莓集团的视角:探索AI技术如何重塑数字媒体产业发展
  • LSPosed模块开发第一篇
  • Summernote 富文本编辑器的内容变成只读模式
  • 开源免费的wiki知识库
  • 服务器虚拟内存是什么?虚拟内存怎么设置?
  • 驰骋BPM RunSQL_Init SQL注入漏洞复现
  • 通过数组中元素或者key将数组拆分归类成新的二维数组
  • 轩轩游桂林
  • MySql-MySqlConnector
  • [PHP内核探索]PHP中的哈希表
  • 【Leetcode】104. 二叉树的最大深度
  • classpath对获取配置文件的影响
  • Django 博客开发教程 16 - 统计文章阅读量
  • JAVA_NIO系列——Channel和Buffer详解
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Lsb图片隐写
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Promise面试题,控制异步流程
  • react 代码优化(一) ——事件处理
  • Redis的resp协议
  • socket.io+express实现聊天室的思考(三)
  • 精彩代码 vue.js
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 来,膜拜下android roadmap,强大的执行力
  • 前端_面试
  • 我从编程教室毕业
  • 白色的风信子
  • HanLP分词命名实体提取详解
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ‌移动管家手机智能控制汽车系统
  • # 职场生活之道:善于团结
  • ######## golang各章节终篇索引 ########
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • ${ }的特别功能
  • (C++哈希表01)
  • (javascript)再说document.body.scrollTop的使用问题
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)计算机毕业设计高校学生选课系统
  • (黑马C++)L06 重载与继承
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四)模仿学习-完成后台管理页面查询
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)Docker基本介绍
  • (轉貼) UML中文FAQ (OO) (UML)
  • .env.development、.env.production、.env.staging
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端