后端返回字符流,前端处理进行excel文件导出操作
针对于这种的文件导出,最关键的是响应类型的设置,也就是responseType的设置(responseType:"arraybuffer"或者responseType:"blob"),这两种类型都是可以的。responseType表明返回服务器返回的数据类型。
具体代码如下:
方法一:(自己在具体项目上的应用)
// 接口调用方式(这是我的项目中的调用方式,自己应用具体看自己的设置)
export const exportSysOrgUser = (data) => {
return api.post(`${server.patchBase}/sysOrgUser/exportSysOrgUser`, data,, {responseType:"arraybuffer"})
}
let result = this.exportSysOrgUser(params); // 接口调用返回的结果
// 文件导出处理
let content = result;
let fileName = "用户数据.xls";
let bolb = new Blob([content], { type: "application/vnd.ms-excel" });
if ("download" in document.createElement("a")) {
let link = document.createElement("a");
link.download = fileName;
link.style.display = "none";
link.href = URL.createObjectURL(bolb);
document.body.appendChild(link);
link.click();
URL.revokeObjectURL(link.href);
document.body.removeChild(link);
} else {
navigator.msSaveBlob(bolb, fileName);
}
方法二:(网上看见的用axios方式请求)
axios({
url:'http://192.168.0.7:8010/sysOrgUser/exportSysOrgUser', // 请求路径
method:'post', //请求方式
headers:{
contentType: 'application/json;charset=UTF-8',
Authorization: this.$storage.getSession("token") // token
},
params: params, // 参数
responseType: 'blob', // 表明返回服务器返回的数据类型
}).then((res) => {
let data = res.data
const blob = data
const fileName = '订单导出.xls'
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)
})
不管哪一种方式,最重要的是responseType:"arraybuffer"或者responseType:"blob"的设置,这个属性是必须传的!!!!
另外,在做的时候发现了一个很严重的问题,在自己的项目中上面的俩种方式导出的文件是乱码的,这个问题困扰我2天时间,经过排查和查资料,最终发现是前端使用的mock和responseType:"blob"之间冲突,导致responseType:"blob"没有生效。具体原因暂时还没搞明白,我把mock关闭,就一切正常了!!!
如果有人在自己的项目中用到mock数据的话,一定要注意这一点!
后端返回字符流,前端处理进行excel文件导出操作的更多相关文章
- loadrunner实现excel文件导出操作
项目中需要对“商品信息”进行查询及导出,但是loadrunner并不能录制到“保存”这一操作. 项目介绍:flex+Http协议: 不能录制的原因: 在我们点击了“导出”按钮后,服务端已经生成一份我们 ...
- io流(文件字符流(FileReader,FileWriter文件的复制))
文件字符流(FileReader,FileWriter文件的复制) 文件的复制 效率低的方法 注意:字符流需要刷新操作,字节流不需要,只有刷新后才可以将程序中的内容导入到目标文件中 package c ...
- C# Excel文件导入操作
Excel文件导出的操作我们经经常使用到,可是讲一个Excel文档导入并显示到界面还是第一次用到. 以下简介下在C#下怎样进行Excel文件的导入操作. 首先加入两个引用 using System.I ...
- 我的视频网站开通,第一个 ArcGIS文本文件,excel文件生成点操作发布,希望大家支持
网站地址:http://i.youku.com/gisoracle第一个学习视屏:ArcGIS文本文件,excel文件生成点操作http://v.youku.com/v_show/id_XNzM3Nz ...
- php excel文件导出之phpExcel扩展库
php Excel 文件导出 phpExcel 官网 http://phpexcel.codeplex.com/ /** * 导出特定文件 * 依据详细情况而定 */ public function ...
- 使用npoi插件将excel文件导出
大致流程:前端使用URL地址的方式跳转到action后返回file类型数据 js: window.location.href = '/Home/index?Id=' + id 后台代码: /// &l ...
- JAVA对Excel文件进行操作
JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...
- Python中xlrd和xlwt模块使用方法 (python对excel文件的操作)
本文主要介绍可操作excel文件的xlrd.xlwt模块.其中xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入. 安装xlrd和xlwt模块 xlrd和xlwt模块不是 ...
- excel文件导出和导入
pom.xml添加依赖 @RestController @RequestMapping(value = "/excel") public class ExpImpExcelCont ...
- php excel文件导出之二 图像导出
PHP文件导出 之图像 和 文字同一时候导出 事实上之前写了个php文件导出.跟这个极为相似,由于项目须要对图像进行导出.查询一番.又写了一个, 这个能实现图像的导出(仅仅能是本地图像,不能使用远程图 ...
随机推荐
- C++11之线程库
在 C++11 之前,涉及到多线程问题,都是和平台相关的,比如 Windows 和 Linux 下各有自己的接口,这使得代码的可移植性比较差.C++11 中最重要的特性就是对线程进行支持了,并且可以跨 ...
- py13函数迭代器与生成器
"""什么是迭代器 迭代:更新换代(重复)的过程,每次的迭代都必须基于上一次的结果 迭代器:迭代取值的工具 为什么要用 迭代器给你提供了一种不依赖于索引取值的方式 如何用 ...
- oracle学习之undo的基本知识及事务与undo、数据块的关联
通过自己学习总结的这些undo知识能够让大家都能深刻了解oracle的undo相关原理. 一.undo撤销表空间的作用 撤销表空间通常称为undo表空间:undo表空间的段也称为撤销段或undo段.回 ...
- 服务器5M带宽下载速计算
5M贷款的服务器实际下载速度不是5M每秒,而是640KB/S,是由于服务商口中的宽带指的是bit(比特),而下载速度使用的单位是Byte(字节),1Byte(字节)=8bit(比特),所以,宽带和下载 ...
- docker镜像的获取、查看、删除、docker镜像管理、docker容器管理
在不想弄乱本地及其环境下该如何进行系软件的安装? 下载安装docker工具 获取该软件的docker镜像(你以后想要用各种工具,基本都能够搜索docker search nginx:版本号到合适的镜像 ...
- 原生js实现折线图
不借助Echarts等图形框架原生JS快速实现折线图效果 1. 折线图效果预览 例如下图所示的折线图效果实现就很简单: 调用下面这段JS代码中的方法就好了: 假设页面上需要连接的所有点元素集合是ele ...
- logback 日志脱敏处理
1.按正则表达式脱敏处理 参考: https://www.cnblogs.com/htyj/p/12095615.html http://www.heartthinkdo.com/?p=998 站在两 ...
- kibana启动及导出PDF报错
kibana启动及导出PDF报错,可能是由于kibana需要的系统依赖没有安装 CentOS/RHEL系统需要安装以下依赖: ipa-gothic-fonts xorg-x11-fonts-100dp ...
- pyhon&QT编译
1.编译qrcpyrcc5 -o ico_rc.py ./ico/ico.qrc.qrc文件格式<RCC> <qresource prefix="/"> & ...
- 在项目中配置proxy 解决调试过程中的跨域问题