IE浏览器下载后台返回的Excel文件,报错400
问题描述(见下图):


问题分析:
400是后端没有接收到请求
原因是后端高版本的tomcat不会自动对字符串进行转义
所以,前端把参数值进行转义,即encodeURI(string)
问题处理前代码(传参数用一个字符串传递):
exportExcel(){
// 导出文件list的内容。
let uu=$.getCookie('prefixUrl');
let url=`${uu}/salesReport/exportPublicToExcel`;
let cookie=$.getCookie('sessionId');
// let cookie=encodeURI($.getCookie('sessionId'));
let info=''; //这里是查询条件。
info=`"createYear":"${this.createYear}","createWeek":"${this.createWeek}"`;
//type===3即客户拜访情况时,查看的是月
let type = this.typeListVal
if(type === 3){
info=`"createYear":"${this.createYear}","createMonth":"${this.createMonth}"`;
}
// info = encodeURI(info)
url=`${url}?type=${type}&sessionId=${cookie}&searchParams=${info}`;
// window.location.href=url;
// console.log(url)
window.open(url);
},
问题处理后代码:
exportExcel(){
// 导出文件list的内容。
let uu=$.getCookie('prefixUrl');
let url=`${uu}/salesReport/exportPublicToExcel`;
let cookie=$.getCookie('sessionId');
// let cookie=encodeURI($.getCookie('sessionId'));
let info=''; //这里是查询条件。
info=`"createYear":"${this.createYear}","createWeek":"${this.createWeek}"`;
//type===3即客户拜访情况时,查看的是月
let type = this.typeListVal
if(type === 3){
info=`"createYear":"${this.createYear}","createMonth":"${this.createMonth}"`;
}
info = encodeURI(info)
url=`${url}?type=${type}&sessionId=${cookie}&searchParams=${info}`;
// window.location.href=url;
// console.log(url)
window.open(url);
},

将参数处理一下,就可以正常下载了
补充说明:也可以采用二进制流下载方式处理,可查看前面分享的文章
还可以直接下面这样,传参方式改一下,所有参数都用&来拼接(需要后台配合)
exportExcel(){
// 导出文件list的内容。
let vm = this;
let goRealTime,returnRealTime;
if(vm.goRealTime){
goRealTime=new Date(vm.goRealTime).getTime();
}else{
goRealTime = '';
}
if(vm.returnRealTime){
returnRealTime=new Date(vm.returnRealTime).getTime();
returnRealTime = returnRealTime + 3600*24*1000;
}else{
returnRealTime = '';
}
let uu=$.getCookie('prefixUrl');
let sessionId=$.getCookie('sessionId');
// info=`"billType":"${this.billType}","startTime":"${stratT}","endTime":"${entT}","billCode":"${this.orderNumber}","departmentName":"${this.departmentName}","ownerName":"${this.applyUserName}"`;
// url=`${url}?type=${type}&sessionId=${cookie}&searchParams=${info}`;
let url=`${uu}/useVehicleApply/exportToExcel?sessionId=${sessionId}&orderNumber=${vm.orderNumber}&departmentName=${vm.departmentName}&applyUserName=${vm.applyUserName}&goRealTime=${goRealTime}&returnRealTime=${returnRealTime}&licensePlate=${vm.licensePlate}&applyStatus=${vm.applyStatus}&useCarType=0` ;
// console.log(url);
window.location.href=url;
},
IE浏览器下载后台返回的Excel文件,报错400的更多相关文章
- 使用office 365打开excel文件报错,提示“向程序发送命令时出现问题”
我买了一套正版的office 365装在我的windows10 上.但是每次打开excel都会报错,如图一.求教了微软技术人员,他们给出了以下办法: 图一 方法一: 修复安装Office ====== ...
- .net 读取Excel文件报错
错误内容 Microsoft Office Excel 不能访问文件“D:\WWWRoot\Website\Test\Excels\Test1.xls”. 可能的原因有: 1 文件名称或路径不存在. ...
- node模拟后台返回json书写格式报错--Unexpected token ' in JSON at position 1
最近在学习Node的知识,就尝试写了一个注册登陆的简单功能,但是自己在模拟后台返回值的时候,总是报错Unexpected token ' in JSON at position 1,查找原因之后,是因 ...
- SQL Server导入Excel文件报错
目录 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 原因 解决方法 该值违反了该列的完整性约束 空行 没有设置为允许为NULL 我以前也导入过数据,也没报错,今天再次导入数据的时候,发现了两 ...
- wget下载阿里云oss的文件报错403
问题 在实际工作中,我们为了方便,会将一些脚本储存在云端(阿里云OSS),这样方便我们使用和下载,但是在实际的使用过程中,我们会遇到一些问题. 示例链接:https://djxlsp.oss-cn-s ...
- poi解析excel文件报错
getFileMagic() only operates on streams which support mark(int) 使用 bis 解决 BufferedInputStream bis = ...
- nginx访问fastdfs文件 报错400 Bad Request
1.修改vi /etc/fdfs/mod_fastdfs.conf 2.将url_have_group_name = false 改为 url_have_group_name = true 3.重启 ...
- axios+post获取并下载后台返回的二进制流
axios+post获取并下载后台返回的二进制流 let url = $.getCookie('prefixUrl')+'/expenseword/exportWords'; let vm = thi ...
- ajax发送请求下载字节流形式的excel文件
背景 开发项目中导出功能,因为数据量有点大,所以导出可能需要时间有点长,所以想用ajax异步请求. 存在问题 利用传统的js和jquery提供的ajax相关获取响应的方式是无法实现excel文件下载的 ...
随机推荐
- SpringCloud学习成长之 十 高可用服务注册中心
文章 第一篇: 服务的注册与发现(Eureka) 介绍了服务注册与发现,其中服务注册中心Eureka Server,是一个实例,当成千上万个服务向它注册的时候,它的负载是非常高的,这在生产环境上是不太 ...
- Yarn简单介绍及内存配置
本文出自:http://blog.chinaunix.net/uid/28311809/abstract/1.html 在这篇博客中,主要介绍了Yarn对MRv1的改进,以及Yarn简单的内存配置和Y ...
- jQuery BlockUI Plugin Demo 5(Simple Modal Dialog Example)
Simple Modal Dialog Example This page demonstrates how to display a simple modal dialog. The button ...
- [c++]struct timeval
struct timeval { time_t tv_sec; // seconds long tv_usec; // microseconds }; re 1. struct timespec 和 ...
- 使用sort,uniq去重并统计出现次数
测试文档test 1 2 3 4 1 2 1 1 sort把相同的放在一起 [root@salt-test ~]# sort test 1 1 1 1 2 2 3 4 uniq -c统计出现的次数 [ ...
- win10 1803 频繁死机,卡死不动
摘自微软官网的解决办法,我的目测好像是可以了. 小娜搜索框输入“PowerShell”选择在管理员命令提示符下键入以下命令: Dism /Online /Cleanup-Image /ScanHeal ...
- 在Win7环境下搭建Geant4工作平台
本物理专业小硕,现在材料实验室工作,研究方向大概是核屏蔽材料的软件模拟吧.其实实验室里大多数师兄弟都是搞焊接的,平时能接触到这类直接给源码自己编译的软件的机会基本为零,所以一切都靠自己探索,成功搭建了 ...
- Egret入门学习日记 --- 第十三篇(书中 5.2~5.3节 内容)
第十三篇(书中 5.2~5.3节 内容) 写日记已经十天多了,我发现越到后面,我书写的方式越来越程序化. 感觉渐渐失去了人类所谓的感情似的. 不过,没想到的是,书中的内容,很少出现了错误,我一路过来到 ...
- Android Studio优化编译速度
随着Android Studio的不断完善,其安卓开发者阵营也基本从Eclipse转移到了Android Studio,毕竟Android Studio是谷歌亲力亲为开发的官方开发软件.不过其最重要的 ...
- linux中的pvmove,pvremove,pvs,pvscan
PV,VG,LV的关系和操作 PV,VG,LV构成了一种易于管理拥有一个或多个硬盘的主机的文件系统,这些硬盘可能只有一个分区也可能有多个.通过将这些物理存在的分区(或称为卷)PV(physical v ...