记firefox v50.0.2,a标签下载xml类型文件坑

1. 使用如题所示浏览器通过A标签下载 必须将a标签插入body 否则不触发下载。

2.如果有浏览器语法兼容性问题,使用webpack babel打包兼容。

具体可参考:es6支持什么浏览器-前端问答-PHP中文网

 下载文件一般方法,代码如下:

1.文件信息变量。

const fileUrl = "这是一个xml文件访问连接.xml";

const fileName = "我是文件名.xml";

 2. 通过a标签下载文件。

    function commonalink(blob, fileName) {

      const href = window.URL.createObjectURL(blob);

      const a = document.createElement("a");

      a.style.display = "none";

      a.href = href;

      document.body.appendChild(a);  最新的firefox已经可以不添加这行代码下载文件了。

      a.download = fileName;

      a.click(); // 模拟在按钮上的一次鼠标单击。

      a.remove();//下载完成需要移除辅助元素。

      URL.revokeObjectURL(a.href); // 释放URL 对象

    }

3. 获取文件流,这里有很多其他的转化方法,axios和fetch都可以转化。

    const getFileStream = (url) => {

      return new Promise((resolve, reject) => {

        // 通过请求获取文件blob格式

        const xhr = new XMLHttpRequest();

        xhr.open("GET", url, true);

        xhr.responseType = "blob";

        xhr.onload = function () {      (

    if (this.status === 200) {

            resolve(this.response);

          } else {

            reject(this.status);

          }

        };

        xhr.send();

      });

    };

4.入口函数调用。

function downloadUrlToBlob(fileUrl, filename) {

      // 通过文件url获取文件流blob

      getFileStream(fileUrl).then((res) => {

        commonalink(res, fileName);

      });

    }

 downloadUrlToBlob

fileUrl, fileName);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值