Vue Excel 文件流导出乱码快速解决方案

今日在开发一个导出功能,原本一个非常简单的功能,却没想里面藏了陷阱!

背景

前端导出的文件流乱码,此时确定非后端问题(可以在postman导出是否正常来判断)。

前端导出:

后端正常数据:

答疑

第一,如果你要做一个导出功能(后端返回的数据位文件流),那接口可能是类似的结构

红框为必不可少的参数,且与其他参数同级,如“data”,“headers”等,如果你没有,那“还没开始就已经结束了”。

第二,前端导出代码可能是类似的结构,网上代码大同小异

对于红框部分,我在测试导出的过程中, 有跟没有乱码结果是一样的,因为这个不是决定性因素(前提是后端返回的数据为utf-8格式的文件流)。

以上两点,在后端返回正常的文件流情况下,前端导出基本是没什么问题的。

但是!如果此时你导出的文件还是出现了乱码,那就需要更深入排查了。

在参考了大部分对于该问题的应对文章后,我总算是找到了解决方案!

深入排查

首先,排查返回的数据响应头数据结构,可在响应拦截器中打印出来,查看“request”中的“response”与“responseType”

如果出现了以上情况,“responseType”是空的,“response”(即“data”)不是blob对象而是一个字符串,这就有问题了。 

正常来说,前端响应接收到应该是一个blob对象,类似

针对这个问题,我排查了蛮久,明明自己在请求接口加了参数 responseType: 'blob'

为啥响应体该字段是空?且返回数据不是blob对象?

在参考了多篇博客,经过仔细排查之后,发现一个问题,就是我项目中使用了“mock”,没错,就是可以劫持请求的那个“mock”!也正是因为它,将我的“responseType”置空!如下:

vue.config.js 配置:

(此时process.env.VUE_APP_BUILD_MODE不是“nomock”,导致使用“mock”)

mock 配置:

(此时responseType: ' ',)

我尝试把使用“mock”的地方注释掉:

重启,导出,成功!!!

响应体也不吃意外的同步

总结

1、请求参数 responseType: 'blob'

2、new Blob([res], {type:"application/vnd.ms-excel;charset=UTF-8"})

3、移除“mock”,避免对请求进行劫持从而影响参数

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

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

相关文章

Linux —— 线程

Linux —— 线程 什么是线程Linux如何实现线程Winodws如何实现线程使用一下线程pthread_create函数原型参数说明返回值 如何解决 ps -aL 查看线程线程为什么轻量 我们今天进入线程的学习: 什么是线程 我们先来了解一个笼统的概念:简单来说,…

【计算机网络篇】数据链路层(8)共享式以太网的退避算法和信道利用率

文章目录 🛸共享式以太网的退避算法🥚截断二进制指数算法 🍔共享式以太网的信道利用率 🛸共享式以太网的退避算法 在使用CSMA/CD协议的共享总线以太网中,正在发送帧的站点一边发送帧一边检测碰撞,当检测到…

Mysql进阶-sql优化篇

sql优化 sql优化insert优化批量插入手动提交事务主键顺序插入大批量插入数据 主键优化数据组织方式页分裂页合并主键设计原则 order by 优化原则 group by优化limit优化count 优化count的几种用法 update优化 sql优化 insert优化 批量插入 Insert into tb_test values(1,Tom…

百信银行的喜和忧:业绩与不良规模同增,曾因踩红线被罚500万元

近日,有报道指出,陪伴中信百信银行股份有限公司(下称“百信银行”)走过七年光阴的首任行长李如东已离任,离任原因或与“7年轮岗”监管规定有关。作为替代,中信银行科技信息部总经理寇冠出任百信银行行长。 …

【高阶数据结构(三)】图的遍历最小生成树问题

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:高阶数据结构专栏⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多Go语言知识   🔝🔝 高阶数据结构 1. 前言2. 图的遍…

Android Compose 一:基础控件

Flutter 与 Compose 组件辣么像,难道是同一个google团队整的;也未深究,只是猜测。 创建项目 需要使用新版本Android studio,忽略步骤… 项目目录 MainActivity说明 1 系统默认页面 Preview 修饰的方法,只用来供开发…

【Linux】-Linux用户和权限与权限的修改[3]

目录 一、认知root用户 1、root用户(超级管理员) 2、su和exit命令 3、sudo命令 二、用户、用户组管理 1、用户管理 2、getent 三、查看权限控制 1、认知权限信息 四、修改权限控制 - chmod 五、修改权限控制 - chown 一、认知root用户 1、root…

C#调用电脑摄像头拍照

1.打开VS2019,新建一个Form窗体,工具->NuGet包管理工具->管理解决方案的NuGet包,在浏览里搜索AForge.Controls、AForge.Video.DirectShow,安装AForge.Controls和AForge.Video.DirectShow 2.安装AForge组件完成后&#xff0c…

Spring底层入门(十一)

1、条件装配 在上一篇中,我们介绍了Spring,Spring MVC常见类的自动装配,在源码中可见许多以Conditional...开头的注解: Conditional 注解是Spring 框架提供的一种条件化装配的机制,它可以根据特定的条件来控制 Bean 的…

如何快速提取出一个文件里面全部指定类型的文件的全部路径

首先,需要用到的这个工具: 度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 打开工具,切换到第五个模块,文件批量复制模块(快捷键:Ctrl5) 点击右边的“搜索添加”按钮&#…

[windows系统安装/重装系统][step-2]BIOS设置UEFI引导、磁盘分区GPT分区、安装系统[含完整操作拍照图片]

重装系统三部曲 [windows系统安装/重装系统][step-1]U盘启动盘制作,微软官方纯净系统镜像下载-CSDN博客 [windows系统安装/重装系统][step-2]BIOS设置UEFI引导、磁盘分区GPT分区、安装系统[含完整操作拍照图片]-CSDN博客 [windows系统安装/重装系统][step-3]装驱动…

开源免费的定时任务管理系统:Gocron

Gocron:精准调度未来,你的全能定时任务管理工具!- 精选真开源,释放新价值。 概览 Gocron是github上一个开源免费的定时任务管理系统。它使用Go语言开发,是一个轻量级定时任务集中调度和管理系统,用于替代L…

使用Android数据恢复恢复已删除的文件[Windows]

智能手机或平板电脑等 Android 设备为用户提供了发送、接收、处理和存储各种数据的能力。它提供了传统手机无法实现的多功能性和简化功能。即便如此,您管理存储在安卓设备中的数据的方式完全取决于您。如果您的手机出现问题,例如系统崩溃或操作系统更新失…

Python-VBA函数之旅-sum函数

目录 一、sum函数的常见应用场景 二、sum函数使用注意事项 三、如何用好sum函数? 1、sum函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页: https://myelsa1024.blog.csdn.net/ 一、sum函数的常…

2024.5.19 机器学习周报

引言 Abstract 文献阅读 1、题目 X-HRNET: TOWARDS LIGHTWEIGHT HUMAN POSE ESTIMATION WITH SPATIALLY UNIDIMENSIONAL SELF-ATTENTION 2、引言 高分辨率表示是人体姿态估计实现高性能所必需的,随之而来的问题是高计算复杂度。特别地,主要的姿态估…

外网如何访问内网?快解析

由于公网IP资源短缺,我们的电脑大多处于内网环境,如何在外网访问内网电脑,成为一个令人头疼的问题,下面我给大家推荐一个非常实用的方法。 1:访问快解析下载安装快解析服务器 2:运行软件,点击“…

ASP.NET MVC(二) HtmlHelper

强类型 》》》 Form Html.Action() 执行一个Action,并返回html字符串。 Html.ActionLink() 生成一个超链接。 》》》 htmlhelper 扩展方法 /// 扩展方法 三要素 静态类静态方法this 》》》》上面需要引入命名空间, 》》》 不需要引入命名空间 pu…

systrace使用

systrace使用 chrome://tracing/ 抓trace方法 1.脚本 在sdk/platformtools/systrace文件目录下执行: python2 systrace.py -b 32000 -o setting_qian.html gfx input view webview wm am audio video camera app ss sched irq freq idle disk load sync workq reg…

Sublime Text for Mac:强大的文本编辑器

Sublime Text for Mac,一款轻量而强大的文本编辑器,为您的编程和写作工作带来无限可能。它以其简洁的界面和出色的性能,成为Mac用户中备受推崇的编辑器之一。 Sublime Text支持多种编程语言,无论是Python、JavaScript、HTML还是CS…

GNSS地表位移监测仪的工作原理

TH-WY1GNSS地表位移监测仪是一种用于实时监测地表位移变化的仪器设备。它主要利用全球导航卫星系统(GNSS)或全球定位系统(GPS)技术,通过接收卫星信号来测量地表点位的移动变化,从而获取地表点位的精确坐标信息,进而监测地表的水平和垂直位移情…