以下是在vue项目中,通过模拟原生form表单实现批量下载
绑定点击事件
<el-button @click="mulDownload()">批量下载</el-button>
在data里定义下载接口地址
urlActionMulDownload: window.SITE_CONFIG['baseUrl'] + '/unionFile/downloadZip',
给postUrl方法传入下载接口地址和需要下载的多个文件的id组成的数组ids
//批量导出
mulDownload() {
this.postUrl(this.urlActionMulDownload, {"fileIds": JSON.stringify(this.ids)})
},
postUrl(url, params) {
var temp_form = document.createElement("form");
temp_form.action = url;
temp_form.target = "_self";
temp_form.method = "post";
temp_form.style.display = "none";
for (var x in params) {
var opt = document.createElement("input")
opt.name = x;
opt.value = params[x];
temp_form.appendChild(opt)
}
document.body.appendChild(temp_form);
temp_form.submit()
},
模拟创建一个form表单,设置表单action为下载接口地址,定义target属性规定在何处打开链接文档,方法为post,表单通过display:none隐藏。
然后通过for循环ids,创建input输入框,将ids中的每个id分别赋值到input中的value,并将所有input框添加到form表单中。
最后通过原生submit方法提交,实现批量下载