使用iframe下载解决a标签下载白屏问题并自定义下载文件名

最近有一个需求是后端返回文件流, 前端接受下载

起初用的a标签, 发现有白屏问题, 用iframe下载发现后端对文件名的设置有问题, 是一段序列化字符串, 沟通无果后决定自己设置下载名字

百度几次后发现没有关于iframe自定义文件名的文章, 思索一阵后想到了这样的方法, 完美解决白屏与自定义文件名的问题

      const blob = new Blob([res], { type: 'application/vnd.ms-excel;charset=UTF-8' });
      const blobUrl = window.URL.createObjectURL(blob);
      //创建iframe与a标签, 将a标签嵌套进iframe
      const iframe = document.createElement("iframe");
      let a = document.createElement("a");
      a.style.display = 'none'
      a.href= blobUrl
      a.target = '_self'
      a.download = '自定义.xls'
      // 
      iframe.append(a)
      a.click()
      // 原来用iframe下载发现无法自定义名字
      // iframe.style.display = "none"; // 防止影响页面
      // iframe.style.height = 0; // 防止影响页面
      // iframe.src = blobUrl
      // document.body.appendChild(iframe); 
      setTimeout(() => {
        iframe.remove();
      }, 0.5 * 60 * 1000);
      window.URL.revokeObjectURL(blobUrl)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值