vue 下载 zip 兼容ie9

这段代码展示了如何在JavaScript中通过创建隐藏的iframe和表单来发起POST请求下载压缩包。它处理了参数的设置,包括文件名、代码等,并考虑了IE浏览器的兼容性问题。在非IE浏览器中,它使用Blob对象创建下载链接。
摘要由CSDN通过智能技术生成
//下载压缩包
    downloadZip (row) {
      let { sxDm, sxMc, zlDm, zlMc, fzxzLx, fileList } = row
      let params = {
        fjzlDm: sxDm || "",
        sxMc: sxMc || "",
        code: zlDm || "",
        fjzlMc: zlMc || "",
        sfbc: fzxzLx || "",
        fileListStr: fileList || []
      }
       const iframe = document.createElement("iframe");
      iframe.style.display = 'none';
      document.body.appendChild(iframe);
      //使用表单动态生成下载请求,并将其iframe`中:
      // 创建一个表单元素
      const form = document.createElement('form');
      form.action = '/wscommon/downFdfsFileOpt'; // 替换为实际的下载URL
      form.method = 'POST';
      for (const key in params) {
        if (params.hasOwnProperty(key)) {
          const input = document.createElement('input');
          input.type = 'hidden';
          input.name = key;
          //后端接口的是一个字符串
          input.value = JSON.stringify(params[key]);
          form.appendChild(input);
        }
      }
      // 提交表单到隐藏的iframe中
      document.body.appendChild(form);
      form.submit();
      setTimeout(() => {
        // 判断浏览器是否ie
        if (myBrowser() == "IE9" || myBrowser() == "IE10" || myBrowser() == "IE11") {
          iframe.removeNode(true);
          form.removeNode(true);
        } else {
          iframe.remove();
          form.remove();
        }
      }, 10000);
      // 这个方式兼容ie10以上,ie10以上才兼容responseType: "blob"
      // request.post("/wscommon/downFdfsFileOpt", params, { responseType: "blob" }).then(res => {
      //   let blob = new Blob([res], { type: 'application/zip' });
      //   if (window.navigator.msSaveOrOpenBlob) {
      //     //兼容ie
      //     navigator.msSaveBlob(blob, zlMc + ".zip")
      //     return
      //   }
      //   const link = document.createElement('a');  // 创建元素
      //   link.style.display = 'none';
      //   link.href = URL.createObjectURL(blob);   // 创建下载的链接
      //   link.setAttribute('download', zlMc);  // 给下载后的文件命名
      //   document.body.appendChild(link);
      //   link.click();  // 点击下载
      //   document.body.removeChild(link);  //  下载完成移除元素
      //   window.URL.revokeObjectURL(link.href);  // 释放掉blob对象
      // }).catch(error => {
      //   console.log(error, "报错")
      //   error;
      // });
    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值