HTML5中Blob文件下载功能如何实现
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章给大家分享的是有关HTML5中Blob文件下载功能如何实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。原理其实很简单,就是将文本或者JS字符串信息(即后台返回来的
千家信息网最后更新 2025年11月12日HTML5中Blob文件下载功能如何实现
这篇文章给大家分享的是有关HTML5中Blob文件下载功能如何实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
原理其实很简单,就是将文本或者JS字符串信息(即后台返回来的在服务器上没有具体路径的动态文件,如导出数据功能)借助Blob转换成二进制,然后,作为 a 标签的 href 属性,配合download属性,实现下载功能,但是缺点是如果文件太大会下载失败。
下面是导出数据的一个实例:
$("#exportAll").on("click",function(){ //点击【全部导出】 //layer.load(); var province = $('#operatingData select[name='province'] option:selected').val(); //查询条件(省) var city = $('#operatingData select[name='city'] option:selected').val(); //查询条件(市) var url = '/xxx/excelAllDownload'; //【全部导出】请求url var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xhr.responseType = "blob"; //返回类型blob xhr.onload = function () { //定义请求完成的处理函数 //layer.closeAll('loading'); if (this.status === 200) { var blob = this.response; var reader = new FileReader(); reader.readAsDataURL(blob); // 转换为base64,可以直接放入a标签href reader.onload = function (e) { var a = document.createElement('a'); // 转换完成,创建一个a标签用于下载 a.download = 'XX数据.xlsx'; a.href = e.target.result; $("body").append(a); // 修复firefox中无法触发click a.click(); $(a).remove(); } }else if(this.status === 504){ alert('导出失败,请求超时'); //layer.msg('导出失败,请求超时', {icon: 2}); }else{ alert('导出失败'); //layer.msg('导出失败', {icon: 2}); } }; xhr.send("province=" + province + "&city=" + city);})上面是在服务器动态生成excel文件时使用的下载方式,因为对应的 URL 并不存在,我们就不能简单的指定 href 属性。
但是不同浏览器对 Blob (类文件对象)有不同的大小限制,这种借助Blob转换成二进制 实现下载功能的方式并不能导出数据量过多的数据到excel文件(即不能下载太大的文件),且有兼容性问题。
所以,我们可以通过 JavaScript 对服务器发出一个请求,通知它去生成某个文件,然后把对应的 URL 返回给客户端。代码如下:(此时的请求结果为一个已经存在于服务器上面的静态文件的路径):
$("#exportAll").on("click",function(){ //点击【全部导出】 var url = '/xxx/excelAllDownload'; //【全部导出】请求url var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xhr.responseType = "blob"; //返回类型blob xhr.onload = function () { //定义请求完成的处理函数 if (this.status === 200) { //方式一实现静态文件下载,不能自定义下载文件名字 //location.href = "json/abc.xlsx"; //this.response(返回的服务器上的静态文件路径) //方式二实现静态文件下载,可以自定义下载文件名字 var a = document.createElement('a'); //创建a标签用于下载 a.download = 'XXX数据.xlsx'; a.href = "json/abc.xlsx"; //this.response(返回的服务器上的静态文件路径) $("body").append(a); // 修复firefox中无法触发click a.click(); $(a).remove(); }else if(this.status === 504){ alert('导出失败,请求超时'); }else{ alert('导出失败'); } }; xhr.send();})感谢各位的阅读!关于"HTML5中Blob文件下载功能如何实现"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
文件
数据
服务器
服务
功能
静态
文件下载
方式
标签
路径
属性
不同
二进制
内容
函数
动态
名字
更多
条件
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
市 网络安全周 发言
国内交友软件开发
服务器机房设计方案
互联网科技发展观
学而思做软件开发待遇怎么样
贵州农商行软件开发招聘
禄劝正规软件开发
现在的网络安全技术
网络安全屏障怎么处理
北京闪银网络技术
昆明竹马互联网科技有限公司
连接数据库时间
数据库的连接与接入
初中学网络技术有前途吗
南京网络安全准入控制系统
影之哀伤这个服务器怎么样
测试管理工具 云服务器
互联网企业科技研发
东方晶源软件开发工程师
sting数据库做的图有背景
郑州市护苗网络安全课
反恐精英一直服务器维护怎么回事
柘荣天气预报软件开发
昆明竹马互联网科技有限公司
软件开发助理简历怎么写
教务系统的软件开发计划
什么叫上层软件开发
mysql循环导出表数据库
乡镇政务网络安全管理
新时代网络安全发展的思考