Blob格式转json格式,拿到后端返回的json数据

news2025/2/27 5:30:12

Blob格式转json格式,拿到后端返回的json数据

在进行文件下载的时候,我们通过blob,进行下载文件,需要axios设置responseType

responseType: 'blob',
 axios({
      	...xxx,
        responseType: 'blob',
    }).then(res => {
          if (!res || !res.headers['content-disposition']) {
               if (res && res.status === 200 && res.data) {

                   //转换步骤
                   const file = new FileReader();
                   file.readAsText(res.data, 'utf-8');
                   file.onload = function () {
                       const obj = JSON.parse(file.result);
                       console.log(obj, 'obj')
                       if (obj.code === '10000') {
                           message.error(obj.message || '下载失败!')
                       }
                       return obj;//此时message为转化好的json格式
                   }
                   return false


               } else {
                   message.error(res.message || '下载失败!')
                   return
               }
           }
           if (res && res.status === 200 && res.data) {
               const { data, headers } = res
               let fileName
               if (headers['content-disposition']) {
                   fileName = headers['content-disposition'].replace(/\w+;filename=(.*)/, '$1')
               } else {
                   fileName = data.fileName
               }
               // 此处当返回json文件时需要先对data进行JSON.stringify处理,其他类型文件不用做处理
               const blob = new Blob([data], { type: headers['content-type'] })
               const dom = document.createElement('a')
               const downUrl = window.URL.createObjectURL(blob)
               dom.href = downUrl
               dom.download = decodeURIComponent(fileName)
               dom.style.display = 'none'
               document.body.appendChild(dom)
               dom.click()
               dom.parentNode.removeChild(dom)
               window.URL.revokeObjectURL(url)
               return res
           }
           message.error(res.message || '下载失败!')
       })
       .catch(err => {
           // error(err || '下载失败!')
           console.log('下载失败')
       })

但是有时候文件过大或者其他原因,后端不让我们下载,会直接返回json,这就恶心,明明要接受blob,又给我个json,
所以就需要进行判断然后转换blob,然后提醒:

正常情况下:
在这里插入图片描述
非正常情况:
在这里插入图片描述

我们需要接收到后转成json:

 //转换步骤
      const file = new FileReader();
       file.readAsText(res.data, 'utf-8');
       file.onload = function () {
           const obj = JSON.parse(file.result);
           console.log(obj, 'obj')
           if (obj.code === '10000') {
               message.error(obj.message || '下载失败!')
           }
           return obj;//此时message为转化好的json格式
       }

在这里插入图片描述
file.onload方法会自动执行,所以直接在这个里面增加提醒就行。嗯,就这样。

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

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

相关文章

论文撰写总结与撰写心得——如何更好的产出几万字的论文

一张图开场,说说为什么会有本篇文章,因为晚上关了灯的屏幕太晃眼睛了,之前好几次不是哥哥我不加班帮小伙伴们搞论文,是当时眼睛顶不住了,所以这篇文章除了说一下论文的码字心得外,哥哥我再说一下如何在夜间…

ElasticSearch 快速上手教程(一)—— ES 的安装

简介 ElasticSearch 是一个开源的搜索引擎,基于 Lucene 开发与构建,是当前流行的企业级搜索引擎,在许多应用场景当中都有使用,如商品全文检索,书籍关键字查询等。在这个系列的文章,会带你从零到一&#xf…

qstock 玩转问财:一行代码实现条件选股

01 问财及qstock简介 问财是同花顺平台上一款专业的财经AI助手,融合了自然语言和语音问答机器人。问财提供了多维度的股票、基金、债券数据,并支持自然语言搜索,能够轻松查找所需的信息。对个人投资者来说,问财最好用的功能它的条…

数据结构 -树

树 1 知识框架2 二叉树概论2.1 特殊二叉树2.2 二叉树的存储2.3 线索二叉树 1 知识框架 基本概念: 1.度:一个结点的孩子为该结点的度,树中最大度数为树的度。 2.深度,高度,层次:高度和层次都是从顶至下&…

JavaWeb09(购物车操作)

目录 一.购物车实现方式 1.Cookie方式. 2.session方式. 3数据库方式. 二.效果预览 2.1 未登录提示 2.2 已登录提示 2.3 查看"我的购物车" 三.实现思路 3.1 分清楚商品 订单项 订单的关系 ①商品:包含基本信息 ②订单项:除了商品的基…

chatgpt赋能Python-python_hashlib解密

Python Hashlib 解密 在计算机编程中,哈希函数是一种将任意大小的数据映射为固定大小值的函数。哈希函数通常用于加密和数据完整性校验。哈希函数可由多种算法实现,其中包括Python hashlib模块。本文将介绍Python中的hashlib模块以及如何使用它来进行哈…

甘特图控件DHTMLX Gantt教程:dhtmlxGantt 与PHP: Laravel(下)

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求,具备完善的甘特图图表库,功能强大,价格便宜,提供丰富而灵活的JavaScript API接口,与各种服务器端技术&am…

实在智能魅力抢眼!携超自动化解决方案和校企合作新范式点燃第七届世界智能大会

为深入实施创新驱动发展战略,推动智能科技赋能经济社会发展,促进校企双方交换需求清单,全方位搭建校企握手通道,5月18日,由国家发展和改革委员会、科学技术部、国家广播电视总局、中国科学院等联合主办的第七届世界智能…

通过九点选择CRM系统

众所周知,CRM系统对于企业的发展至关重要。它可以帮助企业增强市场竞争力,拓展新的市场机会,提升品牌形象和口碑,提高客户满意度和忠诚度,实现业绩的大幅增长。那么选型时,CRM系统哪家好?看准这…

企业如何利用方舟低代码平台快速构建营销系统?

前言 国家在十四五规划中明确将“加快发展现代产业体系、推动经济体系优化”作为数字化转型的重要指导方针 ,数字化转型已经成为企业的主要工作,在传统的方式下先采购产品后进行定制改造的模式已经很难适应快速多变的市场,为了应对市场或自主…

广告商业该如何突破重围

广告商业也算是 我们日常生活中不可 缺少的商业渠道 但是广告商业太广了 很多小伙伴是无从下手的 今天智龙就简单的和你们 分享一下广告商业的 一些心得。 首先从用户类型开始入手 今天我们先讲网络用户群体 从图中可以看出 其实网络购物用户 群体是非常庞大的 意味着如果广告 …

chatgpt赋能Python-python_for_line

Python for Line: A Powerful Tool for Streamlining Your Business Communication In today’s fast-paced business world, effective communication is key to success. Whether you’re collaborating with colleagues, sharing information with clients, or dealing wit…

印刷八木天线的仿真与设计

前言 前篇介绍了俄罗斯的网红Wi-Fi天线,其可看作是八木天线。对于八木天线,相信很多业内朋友都不陌生,这类天线长成这个样子。本篇详细介绍八木天线的原理,并设计印刷八木天线。 ​图 1 八木天线 八木天线的工作原理 天线工作原…

「远程开发」VSCode使用SSH远程linux服务器 - 公网远程连接

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转…

【LeetCode: 面试题 17.24. 最大子矩阵 | 动态规划 】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

多模态方法(更新中)

待coding: moco pcl 文章目录 Semantic Representation for Dialogue ModelingPCL: Peer-Contrastive Learning with Diverse Augmentations for Unsupervised Sentence Embeddings深度网络的公理归因 Axiomatic Attribution for Deep NetworksNLU模型的捷径学习行…

面试可以问面试官哪些问题?这些问题需要弄清楚

在参加面试过程中,面试官通常会给你提供询问的机会,让你了解公司、职位和工作环境。在这个过程中,你可以通过提问来更好地了解公司、职位和工作环境,也能够让面试官感受到你对公司的兴趣和热情。那么都有哪些问题我们是有必要进行…

阿里成立AIDC,用“增长”解题国际化

随着阿里巴巴集团2023财年年报的披露,AIDC也随即浮出了水面。 AIDC是阿里国际数字商业集团的英文简称,AIDC即Alibaba International Digital Commerce。阿里是在5月18日公布的截至2023年3月31日的2023财年Q4及全年财报,财报数据之外&#xff…

Windows 11部署WSL(Windows Subsystem for Linux——适用于Windows的Linux子系统)

文章目录 前言一、Windows 11部署WSL(Windows Subsystem for Linux)1.打开控制面板→程序→启动或关闭 Windows 功能2.勾选 “适用于 Linux 的 Windows 子系统” 和 “虚拟机平台”3.立即重新启动电脑4.按win键或者点击左下角的windows图标打开微软的应用…

Gitee+Jenkins+SonarQube代码上线的实战操作

代码上线-流程图 添加Nexus流程图 机器的环境 172.168.0.1 jenkins # 建议-机器环境:1C以上,2G以上,40G磁盘以上 172.168.0.2 SonarQube # 建议-机器环境:2C以上,4G以上,40G磁盘以上 172.…