post方式实现导出/下载文件
2024-09-01 15:43:29
项目需求: 前端需要传入过多的参数给后端,get地址栏不行,只能接受post方式去导出数据
1、get的下载方式
通常下载方式如下:
let url = xxxx.action?a=xx&b=yy;
window.location.href = url;
// 或者
window.open(url, '_self')
弊端:当请求参数较多时,get的方式无法使用,这时候需要考虑post的方式,但是直接通过ajax的post的方式无法调用浏览器的下载功能
2、post的下载方式
原理: 创建一个隐藏form表单,通过form表单的提交刷新功能,实现下载。代码如下:
// vue项目代码
// 导出excel
postExcelFile(params, url) {
//params是post请求需要的参数,url是请求url地址
var form = document.createElement("form");
form.style.display = "none";
form.action = url;
form.method = "post";
document.body.appendChild(form);
// 动态创建input并给value赋值
for (var key in params) {
var input = document.createElement("input");
input.type = "hidden";
input.name = key;
input.value = params[key];
form.appendChild(input);
} form.submit();
form.remove();
} //调用
this.postExcelFile(
{ currentPage: 2, pageSize: 20 },
'url/xxxxxxx/'
);
注意点:传给后端的参数不是json对象的形式,而是 currentPage=2&pageSize=20
, 因此需要后端兄弟的配合
更多内容来源本人博客: https://shengchangwei.github.io/vue-post-down/
最新文章
- python内置数据类型-字典和列表的排序 python BIT sort——dict and list
- Java排序算法——快速排序
- Android OkHttp完全解析 --zz
- hdu 2089 不要62--数位dp入门
- spring beans源码解读之 ioc容器之始祖--DefaultListableBeanFactory
- [AngularJS] Extract predicate methods into filters for ng-if and ng-show
- [置顶] android之Notification版本兼容性问题
- Web开发中需要了解的东西
- slurm任务调度系统部署和测试(一)
- 在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用
- NoClassDefFoundError: org/apache/commons/lang3/StringUtils
- 吴恩达深度学习第1课第4周-任意层人工神经网络(Artificial Neural Network,即ANN)(向量化)手写推导过程(我觉得已经很详细了)
- ifconfig中lo、eth0、br0、wlan0接口
- Servlet中的jsp内置对象
- [C#] 一款代码注释清理工具
- Django 一对一,一对多,多对多 操作、常用方法
- linux 播放加密DVDs
- python之基础1
- 虚拟化(三):vsphere套件的安装注意及使用
- greenplum的用法