IE浏览器a标签无法下载问题解决(IE浏览器a标签download属性不兼容问题解决)

//下载文件流函数,只支持get方法。

export function downBlob(payload) {

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

// 获取时间戳

let timestamp=new Date().getTime();

// 获取XMLHttpRequest

let xmlResquest = new XMLHttpRequest();

// 发起请求

xmlResquest.open("GET", payload.url +"?"+ (payload.param), true);

// 设置请求头类型

xmlResquest.setRequestHeader("Content-type", "application/json");

//返回类型为文件流

xmlResquest.responseType = "blob";

// 返回

xmlResquest.onload = function(oEvent) {

let content = xmlResquest.response;

//请求失败

if(xmlResquest.status === 404){

message.error("文件不存在,请稍后再试");

return;

}

//请求失败

if(xmlResquest.status != 200){

message.error("网络错误,请稍后再试");

return;

}

//

let reader = new FileReader();

reader.onload = function(event){

//json成功表示服务器报错,将错误信息提示出来

try {

let result = JSON.parse(reader.result);

message.error(result.errorMsg)

reject(result);

}catch (e) {

//json化失败,表示是一个文件流,将文件流下载下来

// 组装a标签

if(‘msSaveOrOpenBlob‘ in navigator){

window.navigator.msSaveOrOpenBlob(blob, fileName);

return;

}

let elink = document.createElement("a");

// 设置下载文件名

elink.download = payload.fileName || timestamp + ".xlsx";

elink.style.display = "none";

let blob = new Blob([content]);

elink.href = URL.createObjectURL(blob);

document.body.appendChild(elink);

elink.click();

document.body.removeChild(elink);

resolve();

}

};

reader.readAsText(content);

};

xmlResquest.send();

}));

}

或者

//文件地址
var url = ‘../aaa/bbb/模板.xlsx‘;
    var xhr = new XMLHttpRequest();
    xhr.open(‘get‘, url, true);
    xhr.responseType = "blob"; // 返回类型blob
    // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
    xhr.onload = function() {
        // 请求完成
        if(this.status === 200) {
            // 返回200
        var blob = this.response;
        var href = window.URL.createObjectURL(blob); //创建下载的链接
//判断是否是IE浏览器,是的话返回true
        if (window.navigator.msSaveBlob) {
          try {
            window.navigator.msSaveBlob(blob, ‘模板.xlsx‘)
          } catch (e) {
            console.log(e);
          }
        } else {
          // 谷歌浏览器 创建a标签 添加download属性下载
          var downloadElement = document.createElement(‘a‘);
          downloadElement.href = href;
          downloadElement.target = ‘_blank‘;
          downloadElement.download = ‘模板.xlsx‘; //下载后文件名
          document.body.appendChild(downloadElement);
          downloadElement.click(); //点击下载
          document.body.removeChild(downloadElement); //下载完成移除元素
          window.URL.revokeObjectURL(href); //释放掉blob对象
        }
            }
        }
    // 发送ajax请求
    xhr.send()

原文地址:https://www.cnblogs.com/xuLessReigns/p/12177115.html

时间: 2024-10-10 06:50:50

IE浏览器a标签无法下载问题解决(IE浏览器a标签download属性不兼容问题解决)的相关文章

判断浏览器是否支持某些新属性---placeholder兼容问题解决

function is_true(){ return 'placeholder' in document.createElement('input'); } 实例:placeholder在低版本IE浏览器下兼容性解决 <script type="text/javascript"> if( !('placeholder' in document.createElement('input'))){ $('input[placeholder],textarea[placehold

Flex Web部分浏览器兼容问题解决

今天找了一天这个项目的兼容性的问题,好在功夫不负有心人啊,都解决了 照理来说Flex应该没什么兼容性的问题的,但是我做的这个web应用却是有那么几个问题,在IE8内核的电脑上会出现,部分360浏览器也是 第一个问题: Flex页面显示不全,由于在我的应用中需要的面积比较大,所以没有用自适应大小,设了minWidth="1000" minHeight="710"这两个属性 但是在360等浏览器中由于页面可见高度只有610左右,所以剩下的就显示不出来了,如下图空白区:

搜狗高速浏览器下载|搜狗高速浏览器免费下载

我在用搜狗高速浏览器时兼容模式据说是基于IE内核开发的.一些网站如网银相关网站,对IE有很好的兼容性.因此如果打不开一些网站时,可以将搜狗浏览器设置为兼容模式再试一试.搜狗高速浏览器下载链接软件介绍搜狗高速浏览器是搜狗公司推的一款智能,安全的浏览器,基于谷歌chromium内核,是浏览器中最快的webkit引擎,也实现了国内首款真双核引擎和给浏览器网络加速的软件,并且搜狗浏览器通过云端大数据的挖掘和精准的捕捉技术,不仅如此,该软件还具有强大的功能,比如有网络收藏夹.独立播放网页视频.flash游

jstl的下载与配置及其常用标签的使用

一.jstl标签的下载与配置 摘要:下载地址http://www.apache.org/dist/jakarta/taglibs/standard/,主要standard.jar  与 jstl.jar 两个jar文件,若为所有web应用使用可拷贝到tomcat的 lib目录下,若为当前应用使用拷贝到WEB-INF/lib中即可 JSTL(JSP Standard Tag Library,JSP标准标签库)由Apache的jakarta小组开发,是开源的标准标签库,目前正在不断完善中.使用JST

springmvc 整合jquery uploadify 火狐浏览器不兼容问题解决

IE8下测试通过,测试告诉我在火狐浏览器中出现问题,打断点发现问题 1.不进入springmvc 解决办法是:;jsessionid=<%=sessionId%> <% String sessionId = request.getSession().getId();%> //上传处理程序url 'uploader' : '${path}/bpmAttachController/fileUpload.do;jsessionid=<%=sessionId%> 2.进入spr

在html使用a标签 直接下载图片 不通过后台实现直接下载

由于a标签在HTML中链接图片会被识别并打开到网页上 如果想下载这个图片的话 就需要连接到后台读取文件并生成一个头信息下载.不过可以先给a标签加上一个download属性即可直接下载了. <a href="__PUBLIC__/static/images/bg.jpg" download="" target="_blank">下载图片</a> 比如thinkphp中就可以这样写

IE浏览器兼容问题解决办法

怎么用一行代码解决CSS各种IE各种兼容问题 用一行代码来解决CSS在,IE6,IE7,IE8,IE9,IE10 中的各种兼容性问题. 在网站前端写代码的过程中,很多时间IE各个版本的兼容问题很难整.现在百度与谷歌都有了一行解决这种兼容性的代码了.如下面的. 百度办法: 百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 <span style="color:#333333;"><!Doctype html> <htmlxmlns=http://ww

用Meta标签代码让360双核浏览器默认极速模式不是兼容模式

这篇文章主要介绍了用Meta标签代码让360双核浏览器默认极速模式打开网站不是兼容模式,需要的朋友可以参考下 这篇文章主要介绍了用Meta标签代码让360双核浏览器默认极速模式打开网站不是兼容模式,需要的朋友可以参考下. 一个网站,大量采用了html5和css3,希望用户都以webkit内核打开页面,但是测试却发现360的以ie内核打开为推荐模式,不知原因为何.其实360给网站开发者设计了一种选择的方法,只要加入一段Meta标签代码就可以解决. 以下信息摘自360官方网站: 浏览模式 极速模式.

Google Chrome浏览器各版本直接下载地址

Google Chrome浏览器各版本直接下载地址 2012.04.12珍藏软件  10161 Views  0 Comments 现在所用的主浏览器Google Chrome,在其官方主页上默认只能找到稳定版和测试版的下载链接.有时候换电脑要重新下载开发版来用时,还需要搜索开发版的下载地址,这里收集一下各个版本的下载链接.下次可以直接使用.离线安装包(仅Windows平台): 开发版Dev http://www.google.com/chrome/eula.html?platform=win&