vue 下载文件 处理后台返回的文件流

1. 下载文件很常见,下载成各种格式的也很常见,本质就是后台返回一个文件流,我们前端去处理一下就行,但是如果因为某些条件,没有返回文件流,返回告诉你,文件出现错误了,那我们就需要把这个错误打出来,给个提示框告诉用户,不能让用户发现文件都下下来了,里面确是文件出现错误,这样就很不友好,怎么做呢,如下代码。

2. 其实很简单我们只需要处理一下这个文件流就行,因为下载文件吗, 我们本身用 blob 类型去接受了,所以正常情况下呢 我们控制台是看不到错误代码 和错误信息的,这个时候我们只能想办法去给他解析一下,解析成json 是不是就能看了,怎么做呢,使用 new FileReader() 。

3. 具体解释一下:

  1. const reader = new FileReader();: 创建一个新的FileReader对象,用于读取文件或数据。

  2. reader.onload = () => { ... }: 当读取操作完成时,会触发onload事件,这里使用箭头函数来定义事件处理程序。在这个事件处理程序中,你可以处理读取到的数据。

  3. try { ... } catch (error) { ... }: 这是一个try-catch语句块,用于捕获可能出现的错误。在try块中,你可以编写处理数据的逻辑;如果出现错误,会被catch块捕获并进行处理。

  4. reader.readAsText(res.data);: 这一行代码是将res.data中的数据作为文本进行读取。readAsText()是FileReader对象的方法,用于以文本形式读取文件或数据

 axios.get('http://localhost:8900/........,   //你的地址
                      {
                        headers: {
                            Authorization: this.token  
                        },
                        responseType:'blob', 
                        params:{
                            templateId: 2,
                            date:  '202401' 
                        }
                     }
                    ).then(res=>{
                        console.log('下载模板',res)
                        const reader = new FileReader(); //使用FileReader对象读取Blob数据,并在读取完成后将其解析为JSON格式
                        reader.onload = () => {
                        try {
                                const jsonData = JSON.parse(reader.result);
                                console.log('下载后解析成json',jsonData)
                                if (jsonData.code==500) {
                                    console.log('解析出错:', jsonData.msg);
                                    this.$message.error(jsonData.msg)
                                } else {
                                }
                            } catch (error) {
                                  console.log('JSON数据解析成功,开始下载文件流');
                                // 在这里执行下载文件流的操作,例如创建下载链接并点击下载
                                let blob = new Blob([res.data])
                                let url = window.URL.createObjectURL(
                                new Blob([res.data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'})  
                                ); //创建下载链接 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
                                let link = document.createElement("a"); //创建a标签
                                link.style.display = "none"; //将a标签隐藏
                                link.href = url; //给a标签添加下载链接
                                link.setAttribute("download", '健康度评价模板'); // 此处注意,要给a标签添加一个download属性,属性值就是文件名称 否则下载出来的文件是没有属性的,空白白
                                document.body.appendChild(link);
                                link.click(); //执行a标签
                            }
                        };
                        reader.readAsText(res.data);  

                    }).catch(err=>{
                        console.log(err)
                    })
                },

4. 以上只是下载成Excel 格式了,其它格式的话改掉后缀 (type)就行。

常见的格式:

5. 如果对你有帮助的话,还请点一下赞哦 ^_^!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】分类与预测算法的评价与优化

以实际案例解析F1值与P-R曲线的应用 一、分类算法与性能评价的重要性二、F1值与P-R曲线的概念与意义三、实例解析:以垃圾邮件检测为例四、代码实现与结果分析五、结论与展望 在数据驱动的时代,机器学习算法以其强大的数据处理和分析能力,成为…

deepinV23 Beta3 安装Nvidia显卡驱动

文章目录 下载驱动禁用系统自带的nouveau驱动查看系统是否启用了nouveau显卡驱动禁用nouveau 安装重启后报错其他问题安装其他版本的驱动[nvidia-smi 显示 CUDA Version:N/A](https://blog.csdn.net/JiuYux/article/details/137981588) 注意:先看 重启后报错 章节 …

基于TCC的分布式事务

优质博文:IT-BLOG-CN 一、分布式事务简介 分布式的架构中,分布式的事务是一个绕不过的挑战,微服务理念的流行让分布式的问题日益突出。 在公司内部, 笔者所接触的管理系统中实际上也存在着分布式事务。 这里假设有这三个系统&…

Scanpy(2)多种可视化

本篇内容为scanpy的可视化方法,可以分为三部分: embedding的散点图;用已知marker genes的聚类识别(Identification of clusters);可视化基因的差异表达; 我们使用10x的PBMC数据集(…

全新Linux教程-驱动大全-PCI和PCIe子系统-P5-PCIe设备的配置过程

1 PCIe系统硬件结构 注意:在pci设备中,可以通过引脚选中设备,但是在PCIe设备中,由于是端对端的配置过程(endpoint to endpoint)。PCIe桥中有很多端口,端口可以直接连接PCIe设备。在设备之间只有…

python连接数据库1

1、建立简单的数据库连接(前提是有数据库) from pymysql import Connection connConnection(host localhost, #主机名 /ip地址 127.0.0.1port3306, #端口,默认为这个userroot, #账户名password123456 #密码,自己的密码 ) #打印相…

施耐德 M340 PWM1 功能块使用方法

功能块帮助文档:《EcoStruxure™ Control Expert - 控制 , 功能块库》https://www.schneider-electric.cn/zh/download/document/33003687K01000/输出处理 --> PWM1:脉宽调制 功能块样式、引脚 EN BOOL 输入。1使能功能块,0不使能功能块…

14.基础乐理-音级、基本音级、变化音级

音级: 乐音体系中的每一个音,都叫 音级。 基本音级: 基本音级是 CDEFGAB 它们七个,在钢琴上使用白键展示的,没有任何升降号、没有任何重升重降号的。 变化音级: 除了 CDEFGAB 这七个音,都叫变化…

利用Python进行大规模数据处理

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 利用Python进行大规模数据处理:Hadoop与Spark的对比 随着数据量的不断增长&…

web网站搭建实验

综合练习:请给openlab搭建web网站 网站需求: 1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息,教学资料 和缴费网站,基于,www.openlab.com/data网站…

Android RecyclerView的LayoutManager配置

RecyclerView的item布局方式依赖于其配置的布局管理器。不同的布局管理器可以实现不同的界面效果。 LayoutManager介绍 RecyclerView可以通过setLayoutManager设置布局管理器,该方法的源码如下: /*** Set the {link LayoutManager} that this RecyclerV…

JAVA 项目<果园之窗>_1

这几天有空看能不能把水果店管理系统整出来,目标是整个网页版本的,以我的电脑做服务器,数据存在mysql中 以我目前的理解整个项目大致可分为前端部分、后端部分、数据库部分,也就这三个部分 目前打开并运行了一个别人的项目&#…

Linux下SPI设备驱动实验:验证读写SPI设备中数据的函数功能

一. 简介 前面文章实现了 SPI设备驱动框架,并在此基础上添加了字符设备驱动框架,实现了读 / 写SPI设备中数据的函数,文章如下: Linux下SPI设备驱动实验:向SPI驱动框架中加入字符设备驱动框架代码-CSDN博客 Linux下…

2024年学浪的缓存怎么导出来

在自我成长的道路上,越来越多的朋友选择通过精选课程来提升自己。然而,面对那些服务期限有限的课程,怎样才能把握住知识的光芒,让它照亮未来的每一个角落?本文就教大家如何利用工具下载学浪app平台的课程 工具我已经打…

【ARM 裸机】I.MX 启动方式之启动头文件 2

接上一节:【ARM 裸机】I.MX 启动方式之启动头文件 1; 2.3、DCD DCD,Device Configuration Data ,就是配置 6ULL 寄存器的,DCD 数据最大限制 1768 字节; CCGR0 是不是很熟悉?对,在…

C++奇迹之旅:深入理解赋值运算符重载

文章目录 📝赋值运算符重载🌠 运算符重载🌉特性 🌠 赋值运算符重载🌠传值返回:🌠传引用赋值:🌉两种返回选择🌉赋值运算符只能重载成类的成员函数不能重载成全…

用Gold-yolo模块改进yolov8模型

gold-yolo论文: https://arxiv.org/pdf/2309.11331.pdf gold-yolo代码: https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO 一 gold模块简介 Gold-Yolo是华为诺亚方舟实验室2023年发布的工作,主要优化检…

Linux程序的地址空间,进程终止

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 一.程序的地址空间 1.1程序的地址空间的引入 我们知道frok可以创建…

重塑我们对随机性在计算中的作用的理解

2023年图灵奖,最近刚刚颁给普林斯顿数学教授 Avi Wigderson!作为理论计算机科学领域的领军人物,他对于理解计算中的随机性和伪随机性的作用,作出了开创性贡献。 Avi Wigderson 的履历 自 1999 年以来,Wigderson 一直担…

Python五子棋VS人机对战

上一次编写了一个python五子棋游戏,但是属于玩家之间的对战。今天介绍五子棋和人机对战。本博文目的是教学和一些毕业设计。 目前电脑下棋逻辑算法还是比较简单的,不能和市面上五子棋相提并论,请大家理想对待! 代码: import pygame import sys import tkinter as tk fro…
最新文章