一 对于某些环境导出是直接用wiondow.href=url直接导出下载,有些业务需求,如员工档案等字段比较多的时候,全选导出就会引发异常,由于Nginx转发长度限制的问题,

如果运维不愿意改变环境,只能硬着头皮修改程序了,即由原来的get方式改为POST,ajax方式是不能下载文件的,因为会把文件流直接返回到回调函数中,所以这里采取隐藏form表单下载

后台接口修改为POST接受方式:

    @SuppressWarnings("rawtypes")
@RequestMapping(value = "/common", method = RequestMethod.POST)
public void export(@RequestParam Map map, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
File file = exportServlce.export(map);
downLoad(httpServletResponse, httpServletRequest, file);
}

前台使用form表单提交数据:

// window.location = gyz.tools.addPer(url);
let url = '/minierp/sys/export/common' var form = $("<form>"); //定义一个form表单
form.attr('style', 'display:none'); //在form表单中添加查询参数
form.attr('target', '');
form.attr('method', 'post');
form.attr('action', url); var input1 = $('<input>');
input1.attr('type', 'hidden');
input1.attr('name', 'exportTitle');
input1.attr('value', me.exportTitle);

  这里注意一点:先不要着急设置表单编码方式,先试试看后台能不能接受到你需要提交的参数,我再这里就是因为第一次主动设置了编码参数,一直报415错误,后来第二次不设置,直接一次成功!(活见鬼)

需要的参数就全部设置为隐藏input输入框即可,有多少都没问题!,value也无论是什么值(数组,字符,list,map等)

最后提交表单即可:

	$('body').append(form);  //将表单放置在web中
form.append(input1); //将查询参数控件提交到表单上
form.append(input2);
form.append(input3);
form.append(input4);
form.append(input5);
form.append(input6);
if (me.appType != undefined) {
var input7 = $('<input>');
input7.attr('type', 'hidden');
input7.attr('name', 'appType');
input7.attr('value', me.appType);
form.append(input7);
}
form.submit();

  这个时候,就解决了url长度的限制,无论你需要传的参数有多少个都可以正确下载!

使用隐藏form表单下载文件,解决url方式下载,由于环境问题而限制url长度,满足不了所有的需求!的更多相关文章

  1. Form 表单提交的几种方式

    简单的总结一下form表单提交的几种方式:1.最简单的方式 就用form的submit提交方式,这种提交方式是不需要回调函数的   这种方式最近到一个form提供action路径后台接受就可以< ...

  2. Ajax提交Form表单及文件上传

    刚刚申请下来的博客,写得第一篇.有点小激动,本人以前是一名工业3D设计师突然有些变故做上了JavaWeb开发: 前几天,发现了一些小问题.我在写后台管理页面时,需要上传一张图片.于是我就用很普通的Fo ...

  3. .net c# 提交包含文件file 的form表单 获得文件的Stream流

    1.前台html代码 要写一个有id的form,可是不能有runat="server"属性.由于一个页面中,有这个属性的form表单仅仅能有一个. 再要有一个有name的ifram ...

  4. Django的form表单之文件上传

    在生成input标签的时候可以指定input标签的类型为file类型 <!DOCTYPE html> <html lang="en"> <head&g ...

  5. form表单的两种提交方式,submit和button的用法

    1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在jsp的前端页面写:有两种方法,一种是用submit提交.一种是用button提交.方法一: 在jsp的前端页面的 ...

  6. 触发form表单的两种提交方式,submit和button的用法

    1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在jsp的前端页面写:有两种方法,一种是用submit提交.一种是用button提交. 方法一: 在jsp的前端页面 ...

  7. 【转载】form表单的两种提交方式,submit和button的用法

    1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在jsp的前端页面写:有两种方法,一种是用submit提交.一种是用button提交.方法一: 在jsp的前端页面的 ...

  8. php+form表单的文件上传

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 2020最新Servlet+form表单实现文件上传(图片)

    servlet实现文件上传接受 这几天学了一点文件上传,有很多不会,在网查了许多博客,但是最新的没有,都比较久了 因为我是小白,版本更新了,以前的方法自己费了好久才弄懂,写个随笔方便以后查找 代码奉上 ...

随机推荐

  1. Java并发编程实战3-可见性与volatile关键字

    1. 缓存一致性问题 在计算机中,每条指令都是在CPU执行的,而CPU又不具备存储数据的功能,因此数据都是存储在主存(即内存)和外存(硬盘)中.但是,主存中数据的存取速度高于外存中数据的存取速度(这也 ...

  2. jenkins 通过maven部署Tomcat8报错

    问题过程 jenkins执行构建过程中,可以在workspace/项目名/target/目录下产生xxx.jar文件 但是在执行构建后操作时报出如下错误 [INFO] ---------------- ...

  3. linux shell 执行命令顺序

    1.shell命令搜索顺序 在linux shell 中输入一个命令,如果有多个同名指令,shell需要按照一定规则去取优先级高的一个执行,shell命令的搜索顺序为: 1.别名,使用alias创建的 ...

  4. 自平衡二叉(查找树/搜索树/排序树) binary search tree

    在计算机科学中,AVL树是最先发明的自平衡二叉查找树.AVL树得名于它的发明者 G.M. Adelson-Velsky 和 E.M. Landis,他们在 1962 年的论文 "An alg ...

  5. mapreduce方式操作hbase

    一.导入数据到hbase 1.配置hbase-site.xml指向hdfs <configuration> <property> <name>hbase.rootd ...

  6. div布局小技巧

    第一: 多个div整齐排列在外层div中,如图: 看到所有小的div的前后左右间隔都相等.假定已经制作好上述单元div控件.在外层大div中循环开始创建它们. for (var i=0; i < ...

  7. 【BZOJ1922】大陆争霸(最短路)

    [BZOJ1922]大陆争霸(最短路) 题面 BZOJ 洛谷 题解 最短路变形题. 定义\(dis\)表示最短路,\(d\)表示最早可以进入当前点的时间.显然\(d=max(max(dis_v,d_v ...

  8. rsync同步公网yum源搭建本地yum仓库

    镜像同步公网yum源上游yum源必须要支持rsync协议,否则不能使用rsync进行同步. centos源:rsync://rsync.mirrors.ustc.edu.cn/centos/ epel ...

  9. Codeforces Round #532

    以后不放水题了 C.NN and the Optical Illusion 复习一下高中数学即可 $\frac{ans}{ans+r}=\sin \frac{\pi}{n}$ 解方程 #include ...

  10. linux tmux命令小结

    http://note.youdao.com/noteshare?id=f1be507b4be27e53684b46a1424746b5