vue2 点击按钮下载文件保存到本地(后台返回的zip压缩流)

// import './mock/index.js';  // 该项目所有请求使用mockjs模拟 去掉mock
 页面url下载
  1. console.log('res', res)
  2. //token 是使页面不用去登录了
  3. if (res.file) {
  4. window.location.href =
  5. Vue.prototype.$config.VUE_APP_BASE_IDSWAPI +
  6. Vue.prototype.$config.VUE_APP_IDSW +
  7. '/service/models/download?action=zip&filepath=' +
  8. encodeURIComponent(encodeURIComponent(res['file'])) +
  9. `&token=${localStorage.getItem('inmsToken')}&accessToken=${localStorage.getItem('accessToken')}`
  10. }

responseType: "blob",   

let blob = new Blob([response.data], { type: "application/zip" }); //注意是response 或者 response.data
let url = window.URL.createObjectURL(blob);  这三句最重要!!!

  1. //普通代码
  2. axios.post(postUrl, params, {responseType: 'arraybuffer'}).then(res => {
  3. // 创建Blob对象,设置文件类型
  4. let blob = new Blob([res.data], {type: "application/vnd.ms-excel"})
  5. let objectUrl = URL.createObjectURL(blob) // 创建URL
  6. location.href = objectUrl;
  7. URL.revokeObjectURL(objectUrl); // 释放内存
  8. })

  1. downloadAll() {
  2. axios({
  3. method: "get",
  4. url: "api/TemplateDownload/GetAllTemplateZIP",
  5. headers: {
  6. "content-type": "application/json; charset=utf-8",
  7. Authorization: Cookies.get("token") || "",
  8. },
  9. responseType: "blob",
  10. })
  11. .then((response) => {
  12. let blob = new Blob([response.data], { type: "application/zip" });
  13. let url = window.URL.createObjectURL(blob);
  14. const link = document.createElement("a"); // 创建a标签
  15. link.href = url;
  16. link.download = "模板下载"; // 重命名文件
  17. link.click();
  18. URL.revokeObjectURL(url); // 释放内存
  19. this.checkList = [];
  20. })
  21. .catch((error) => {
  22. console.log(error.data);
  23. });
  24. },
  25. //excel
  26. let blob = new Blob([response.data], { type: "application/vnd.ms-excel" });
  27. dl() {
  28. axios({
  29. method: "get",
  30. url: "http://10.180.170.3:8794/tRptMwStdClt/exportData?time=202104",
  31. responseType: "arraybuffer",
  32. })
  33. .then((response) => {
  34. console.log(response);
  35. let blob = new Blob([response.data], {
  36. type: "application/vnd.ms-excel",
  37. });
  38. let url = window.URL.createObjectURL(blob);
  39. const link = document.createElement("a"); // 创建a标签
  40. link.href = url;
  41. link.download = "模板下载"; // 重命名文件
  42. link.click();
  43. URL.revokeObjectURL(url); // 释放内存
  44. this.checkList = [];
  45. })
  46. .catch((error) => {
  47. console.log(error.data);
  48. });
  49. },

获取到了后台传过来的excel文件 前端用vue怎么接收并导出? - 中文 - Vue Forum

vue.js前端实现excel表格导出和获取headers里的信息 - 五个半柠檬 - OSCHINA - 中文开源技术交流社区

java后台需要设置

  1. response.addHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
  2. response.setHeader("Access-Control-Expose-Headers","Content-Disposition");
  3. 才能获取到文件名等信息

  1. // 导出execel2
  2. handleExcel() {
  3. this.$http({
  4. url: this.$http.adornUrl(url),
  5. method: "post",
  6. responseType: "blob",//!!!!
  7. params: this.$http.adornParams({
  8. userAccount: this.userName,
  9. }),
  10. }).then((res) => {
  11. // console.log(res, "res");
  12. let blob = new Blob([res.data], { type: "application/vnd.ms-excel" });
  13. let fileName = decodeURI(
  14. response.headers["content-disposition"].split(";")[1].split("=")[1]
  15. );
  16. let url = window.URL.createObjectURL(blob);
  17. const link = document.createElement("a"); // 创建a标签
  18. link.href = url;
  19. link.download = fileName; // 重命名文件
  20. link.click();
  21. URL.revokeObjectURL(url); // 释放内存
  22. });
  23. },

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/636558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux上创建一个LVM卷组,将多个物理卷添加到卷组中使用】

Linux上创建一个LVM卷组,将多个物理卷添加到卷组中使用 目录1.列出当前系统中所有的块设备信息,包括磁盘、分区、逻辑卷等2.对磁盘进行分区操作3.创建了一个名为 vg_data 的卷组4.将物理卷添加到已经存在的卷组5.在卷组中创建一个逻辑卷6.查看已创建的 L…

CodeWave智能开发平台--03--目标:应用创建--10初级采购管理系统总结

摘要 本文是网易数帆CodeWave智能开发平台系列的第14篇,主要介绍了基于CodeWave平台文档的新手入门进行学习,实现一个完整的应用,本文主要完成10初级采购管理系统总结 CodeWave智能开发平台的14次接触 CodeWave参考资源 网易数帆CodeWave…

【C++】string的基本使用

从这篇博客开始,我们的C部分就进入到了STL,STL的出现可以说是C发展历史上非常关键的一步,自此C和C语言有了较为明显的差别。那么什么是STL呢? 后来不断的演化,发展成了知名的两个版本,一个叫做P.J.版本&am…

【鸿蒙4.0】详解harmonyos开发语言ArkTS

文章目录 一.什么是ArkTS?1.ArkTS的背景2.了解js,ts,ArkTS的演变js(Javascript)Javascript的简介Javascript的特点 ts(Typescript)ArkTS 二. ArkTS的特点 一.什么是ArkTS? 1.ArkTS的背景 如官方文档所描述,ArkTS是基…

Ubuntu使用docker-compose安装mysql8或mysql5.7

ubuntu环境搭建专栏🔗点击跳转 Ubuntu系统环境搭建(十四)——使用docker-compose安装mysql8或mysql5.7 文章目录 Ubuntu系统环境搭建(十四)——使用docker-compose安装mysql8或mysql5.7MySQL81.新建文件夹2.创建docke…

【问题记录】Linux下克隆git项目到本地

1.出现远端克隆git上代码失败 (1)公钥有问题 linux下git生成公钥失败 解决方法: 删除.ssh下全部的文件,并重新设置用户名和邮箱再重新生成ssh公钥 (2)在询问是不是要把远端地址加入到konw_host中&#x…

【高等数学之牛莱公式】

一、深入挖掘定积分 二、变限积分 三、变限积分的"天然"连续性 四、微积分基本定理 五、定积分基本方法 5.1、换元法 5.2、分部积分法 六、定积分经典结论 七、区间再现公式 八、三角函数积分变换公式 九、周期函数积分变换公式 十、分段函数求定积分

python requests模块

目录 一:介绍 二:发送get请求 三:发送post请求 四:发送put请求 五:发送delele请求 六:响应信息 一:介绍 requests 是 Python 中的一个非常流行的 HTTP 客户端库,用于发送 HTTP…

Python 爬虫 之 抖音视频采集

嗨喽,大家好呀~这里是爱看美女的茜茜呐 知识点: 动态数据抓包 requests发送请求 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 requests pip install requests 如何安装python第三方模块: win R 输入 cmd 点击确定, 输入安装命令 pip install …

论文阅读笔记AI篇 —— Transformer模型理论+实战 (四)

论文阅读笔记AI篇 —— Transformer模型理论实战 (四) 一、理论1.1 理论研读1.2 什么是AI Agent? 二、实战2.1 先导知识2.1.1 tensor的创建与使用2.1.2 PyTorch的模块2.1.2.1 torch.nn.Module类的继承与使用2.1.2.2 torch.nn.Linear类 2.2 Transformer代…

k8s源码阅读:Informer源码解析

写在之前 Kubernetes的Informer机制是一种用于监控资源对象变化的机制。它提供了一种简化开发者编写控制器的方式,允许控制器能够及时感知并响应 Kubernetes 集群中资源对象的变化。Informer通过与Kubernetes API服务器进行交互,通过监听API服务器上资源…

Idea 开发环境不断切换git代码分支导致冲掉别人代码

问题分析 使用git reflog查看执行命令,以下是发生事故的切换和提交动作 46f72622e1 HEAD{41}: commit: feat: 【Sales - 6.3】小程序端不登录也可以录入客户线索 c5e7d9f6e1 HEAD{42}: fetch origin feature/20240102_Sales6.3_xingang:feature/20240102_Sales6.3…

零基础小白刚刚入门Python的注意点总结~

文章目录 一、注意你的Python版本1.print()函数2.raw_input()与input()3.比较符号&#xff0c;使用!替换<>4.repr函数5.exec()函数 二、新手常遇到的问题1、如何写多行程序&#xff1f;2、如何执行.py文件&#xff1f;3、and&#xff0c;or&#xff0c;not4、True和False…

代码随想录算法训练营Day24 | 122.买卖股票的最佳时期、55.跳跃游戏、45.跳跃游戏||

LeetCode 122 买卖股票的最佳时期 本题思路&#xff1a;记录每天的利润值&#xff0c;第一天的为 0 &#xff0c;第二天的当天的减去前一天的。然后遍历相加为正的利润值。最后得到的结果就是最大利润。 class Solution {public int maxProfit(int[] prices) {int res 0;for(…

使用Nginx和Fancyindex组合搭建文件下载站点详细教程

目录 简介 TIPS 1.下载Nginx 2. 安装Fancyindex和Nginx-Fancyindex-Theme模块 2.1 安装编译工具和依赖 2.2 下载Fancyindex和Nginx-Fancyindex-Theme 2.3 编译Nginx并包括Fancyindex 3. 配置Nginx 4.体验 4.1light主题 4.2dark主题 后记 简介 当使用Nginx和Fancyinde…

Unity3D学习之Unity基础

文章目录 1. 第一部分&#xff1a;MONO中的重要内容2. 延时函数2.1 什么是延时函数2.2 延时函数的使用2.2.1 延时重复函数2.2.2 取消延迟函数2.2.3 判断是否有延迟函数开启2.2.4 延迟函数和依附对象的关系 3 协同程序3.1 Unity中的多线程3.2 协同程序3.3 协程的使用3.3.1 关闭协…

第三课:GPT

文章目录 第三课&#xff1a;GPT1、学习总结&#xff1a;GPT出现的原因GPT的方法原理目前存在的问题无监督的预训练优化目标模型结构 监督微调课程ppt及代码地址 2、学习心得&#xff1a;3、经验分享&#xff1a;4、课程反馈&#xff1a;5、使用MindSpore昇思的体验和反馈&…

【Spring源码分析】扫描并注册BeanDefinition逻辑

扫描并注册BeanDefinition逻辑 一、ClassPathBeanDefinitionScanner 扫描源码分析doScan 扫描的具体逻辑findCandidateComponents 方法解析generateBeanName 方法解析checkCandidate 方法解析 二、总结 阅读此需阅读下面这些博客先【Spring源码分析】Bean的元数据和一些Spring的…

SpringBoot项目中简单使用虚拟机Redis

目录 步骤大致如下&#xff1a; 一.在pom文件中加入redis依赖 二.在虚拟机上打开我们下载好的Redis。开启服务器端并获取虚拟机ip地址 三.在项目配置。 四&#xff1a;使用redis 测试 redis是一个以键值对存储的NoSQL。被数百万开发人员用作缓存、矢量数据库、文档数据库、…

AcWing 68:0到n-1中缺失的数字 ← 二分

【题目来源】https://www.acwing.com/problem/content/64/【题目描述】 一个长度为 n−1 的递增排序数组中的所有数字都是唯一的&#xff0c;并且每个数字都在范围 0 到 n−1 之内。 在范围 0 到 n−1 的 n 个数字中有且只有一个数字不在该数组中&#xff0c;请找出这个数字。【…