使用POST方式实现参数传递及下载

download(data){  
  this.openPostWindow("/api/file/download",data);
},
//url 为请求地址, data为需要请求的数据
openPostWindow(url, data) {
    //创建form表单,以下是form表单的各种参数
    let tempForm = document.createElement("form");
    tempForm.id = "tempForm";
    tempForm.method = "post";
    tempForm.action = url;
    tempForm.target = 'blank';
    //创建标签 <input></input> 标签 然后设定属性,最后追加为 form标签的子标签
	for (let i in data) {
	    let hideInput = document.createElement("input")
	    hideInput.type = "hidden"
	    hideInput.name = i
	    hideInput.value = data[i]
	    tempForm.appendChild(hideInput)
  	}

    if (document.all) {
      tempForm.attachEvent("onsubmit", function () {
      });        //IE
    } else {
      let subObj = tempForm.addEventListener("submit", function () {
      }, false);    //firefox
    }
    document.body.appendChild(tempForm);
    if (document.all) {
      tempForm.fireEvent("onsubmit");
    } else {
      tempForm.dispatchEvent(new Event("submit"));
    }
    tempForm.submit();//提交POST请求
    document.body.removeChild(tempForm);//删除整个form标签
}

一次性下载多个附件

window.open方式只会调用一次,无法实现多次下载

//下载模板
downloadMould() {
//this.getCheckNodes()获取ztree选中节点的数据集合
  let categoryValue = this.getCheckNodes();
  if (categoryValue != null && categoryValue.length > 0) {
    for (let val of categoryValue) {
      //window.open(`/api/import/downloadFileMode?innerType=`+ val);
      this.downloadFile(`/api/import/downloadFileMode?innerType=` + val);
    }
  } else {
    return this.$Message.error("请先选择要下载的模板!")
  }
},
downloadFile(url) {
  const iframe = document.createElement("iframe");
  iframe.style.display = "none"; // 防止影响页面
  iframe.style.height = 0; // 防止影响页面
  iframe.src = url;
  document.body.appendChild(iframe); // 这一行必须,iframe挂在到dom树上才会发请求
  // 5分钟之后删除
  setTimeout(() => {
    iframe.remove();
  }, 5 * 60 * 1000);
},

浏览器下载和预览实现的区别(后台代码)

// 设置响应头后,浏览器会默认下载
    response.setHeader("Content-Disposition", "attachment; filename=" +  pathName);

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值