今天碰到用户使用后台点击下载无效问题,通过其他浏览器测试其实是没问题的,但是根据用户反馈他使用的是IE浏览器,所以本人测试了使用<a>标签在IE下触发下载可能保存时会直接将文件命名成download,并且还没有文件后缀,所以用户可能会不知道你下载的是什么。

其实写过好几个后台的下载都是要么使用 <a> download 属性或window.open实现下载效果,使用这两个方法除IE浏览器外,应该大部分浏览器都可以实现下载效果的。

例如:

//下载
function downloadFile(row){var link = document.createElement('a');link.setAttribute("download", row.fileName);link.href = '/download?id=' + row.id;link.click();
}
//下载
function downloadFile(row){window.open('/download?id=' + row.id);
}

最后还是要根据用户反馈来进行修改下载功能,在网上百度了下大佬的解决方案,改成这种写法就能在IE下实现下载并可以把文件生成对应名称和后缀。

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

注:下载请求的链接是后台将文件已流的格式返回给前端

a标签下载在IE浏览器不兼容问题相关推荐

  1. 使用a标签下载文件,浏览器会直接打开解决方案

    使用a标签下载文件,浏览器会直接打开解决方案 背景 一.HTML中的a标签实现点击下载 二.即使使用a标签的download属性,chrome浏览器还是会打开 三.解决方案 解决方案一:使用ajax请 ...

  2. a标签下载文件,浏览器变打开预览的解决方案

    前景: 处理接口返回的文件链接需要下载,例如http://xxxxx/xxx.jpeg,使用a标签进行下载时(加了download),浏览器对这些类型的文件可以解析,还会打开这个文件在浏览器上进行预览 ...

  3. A标签下载文件 IE浏览器

    <a href="XXX.zip" target="_blank" >下载导入程序</a> 在IE有用,加上一个Target的属性,会弹 ...

  4. js下载文件及命名(兼容多浏览器)

    js文件下载 ; 文件下载方法 ; IE中文件下载的方法 ; 使用IE下载 ; 文件下载兼容性 ; a标签下载 ; 浏览器下载 函数功能:实现主流浏览器的文件下载功能: 兼容性: >=IE10, ...

  5. 解决a标签下载网络图片直接打开的问题,通过浏览器下载网络文件

    因为公司用的分布式文件系统上传文件后返回的是 http文件路径,当文件是图片是,用a标签下载会直接打开而不是下载,所以找了下怎么通过浏览器下载远程服务器上的图片.网上大部分都是后台代码,现在把前端后台 ...

  6. oracle火狐,火狐浏览器下载 Mozilla 火狐浏览器 Firefox v87.0 免费官方正式安装版 下载-脚本之家...

    火狐浏览器Mozilla Firefox是一个自由的,开放源码的浏览器,适用于 Windows, Linux 和 MacOS X平台,它体积小速度快,还有其它一些高级特征,主要特性有:标签式浏览,使上 ...

  7. IE6,IE7,FF等浏览器不兼容原因及解决办法(转)

    IE6,IE7,FF等浏览器不兼容原因及解决办法 2008-07-15 11:26 本文转载,作者:阿里巴巴前端开发,发到这里只是方便以后查看,也给各位需要的朋友. 浏览器的不兼容,大家肯定都是深恶痛 ...

  8. 解决pc端浏览器不兼容的问题

    1.对于浏览器之间存在的默认样式差距 <link href="https://cdn.bootcss.com/normalize/7.0.0/normalize.min.css&quo ...

  9. Blazor 中如何下载文件到浏览器

    Blazor 中如何下载文件到浏览器 目录 一.前言 二.方法一(导航跳转) 三.方法二(下载后传出) (一) 使用 RestSharp 下载 (二) 使用 BlazorDownloadFile 传出 ...

最新文章

  1. 第三章| 3.1文件处理
  2. 云爆发架构是否难以实施?
  3. 笔记-信息系统安全管理-信息安全(混合)
  4. hangfire 过期记录_韩剧丨顶楼、空洞、再次十八岁、僵尸侦探、青春记录
  5. html5实现3d翻页效果,利用css3 3d transform制作超逼真翻书效果
  6. 51单片机基本刷屏测试实验_基于单片机的发动机振动速度、位移和加速度测量方法...
  7. android layout_width 属性,android:layout_weight属性详解
  8. C# 从DataTable中取值
  9. 遍历Panel1中所有label控件的Text
  10. 画五角星中间没有填充_冷军画两个白色五角星,卖出230万,专家大呼:这不是画...
  11. dojo省份地市级联之省份Dao实现类(五)
  12. fw313r手机登录_迅捷(FAST)fw313r路由器手机设置教程 | 192路由网
  13. 关于OBS无法捕获图像的解决方案
  14. xlsxwriter模块安装linux,XlsxWriter模块常用方法
  15. 矩阵求逆(JAVA)利用伴随矩阵
  16. linux配置dhcp服务器authoritative参数作用
  17. 双曲函数奇偶性_[快乐数学]双曲函数(二)
  18. 生物计算机是未来型计算机吗,生物计算机特点及未来发展
  19. composer require fxp/composer-asset-plugin 失败
  20. 事事有着落,件件有回音——MyAppsp平台督查督办管理系统

热门文章

  1. 超融合架构(HCI)和软件定义存储(SDS)的关系和发展
  2. win10临时暂停Microsoft defender阻止软件的运行
  3. RS232-C知识点
  4. 【报告分享】 美妆行业营销报告-从“她经济”到“TA经济“-WEIQ(附下载)
  5. css超出2行在ie11中失效的解决办法
  6. 华为mate9测试软件,【华为Mate9评测】3个月使用不卡顿!EMUI 5.0系统再测_华为 Mate 9(MHA-AL00/4GB RAM/全网通) _手机评测-中关村在线...
  7. flutter最简单的天气预报
  8. 【Linux】 RAID磁盘阵列
  9. 中国大学MOOC-翁恺-C语言程序设计PAT习题集(第四章)
  10. python学习——进阶操作:根据数据绘制省份热力地图