前端兼容IE下载文件,阻止浏览器直接预览文件(ajax)

  downloadFileFromText = (fileName,fileUrl) => {

    const xhr = new XMLHttpRequest();

    xhr.open('get', encodeURI(fileUrl), true);//IE某些版本无法把中文自动编码,所以需要用encodeURI手动编码

    xhr.responseType = 'blob'; // 返回类型blob

    // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑

    xhr.onload = function () {

      // 请求完成

      // 返回200

      const blob = this.response;

      const href = window.URL.createObjectURL(blob); // 创建下载的链接

      // 判断是否是IE浏览器,是的话返回true

      if (window.navigator.msSaveBlob) {

        try {

          window.navigator.msSaveBlob(blob, fileName);

        } catch (e) {

          console.log(e);

        }

      } else {

        // 谷歌浏览器 创建a标签 添加download属性下载

        const downloadElement = document.createElement('a');

        downloadElement.href = href;

        downloadElement.target = '_blank';

        downloadElement.download = fileName; // 下载后文件名

        document.body.appendChild(downloadElement);

        downloadElement.click(); // 点击下载

        document.body.removeChild(downloadElement); // 下载完成移除元素

        window.URL.revokeObjectURL(href); // 释放掉blob对象

      }

    };

    // 发送ajax请求

    xhr.send();

  };

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容