js使用文件流下载csv文件的实现方法


Posted in Javascript onJuly 15, 2019

理解Blob对象

在Blob对象出现之前,在javascript中一直没有比较好的方式处理二进制文件,自从有了Blob了,我们就可以使用它操作二进制数据了。

现在我们开始来理解下Bolb对象及它的文件流下载应用场景,话不多说了,来一起看看详细的介绍吧

1. 创建Blob对象方式如下:

var blob = new Blob(dataArray, options);

dataArray: 它是一个数组,它包含了要添加到Blob对象中的数据。数组可以是二进制对象或者字符串。

options是可选的对象参数,用于设置数组中数据的MIME类型。

1. 创建一个DOMString对象的Blob对象。如下代码:

var str = "<div>Hello World</div>"; 
var blob = new Blob([str], {type: 'text/xml'}); 
console.log(blob); // 输出:Blob {size: 22, type: "text/xml"}

2. 理解URL.createObjectURL对象

window对象的URL对象是用来将blob或file读取成一个url的。

window.URL.createObjectURL(file / blob);

比如我现在结合上面的blob对象来生成一个url的简单demo实列如下所示:

var str = "<div>Hello World</div>"; 
var blob = new Blob([str], {type: '.csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel'});
console.log(blob); 

const url3 = window.URL.createObjectURL(blob);
console.log(url3);

如上代码第一个打印blob变量值如下:

Blob {size: 22, type: ".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"}

打印第二个url3变量值信息如下:

blob:null/2c75a56e-0104-4572-bc19-391d3bf93d9d

3. 理解HTML5中a标签的download属性

HTMl5中给a标签新增了一个download属性,只要我们设置该属性值,那么点击该链接时浏览器不会打开新链接,而是会直接下载文件,并且文件名就是 download 的属性值。

因此结合这个特点,我们就可以简单的实现文件流下载文件了,我们首先在原来的代码基础之上,再动态创建一个a链接,然后把该a标签的样式设置none, 该链接的 href属性 就是我们上面是有 window.URL.createObjectURL(blob); 生成的url,然后我们把 a链接的download属性设置下,该属性值就是我们的下载文件的文件名。最后触发点击功能即可下载了。如下代码:

var str = "<div>Hello World</div>"; 
var blob = new Blob([str], {type: '.csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel'});
console.log(blob);
const url3 = window.URL.createObjectURL(blob);
console.log(url3);

var filename = '文件流下载' + '.csv';
const link = document.createElement('a');
link.style.display = 'none';
link.href = url3;
link.setAttribute('download', filename);
document.body.appendChild(link);
link.click();

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
Jquery日期选择datepicker插件用法实例分析
Jun 08 Javascript
js判断输入字符串是否为空、空格、null的方法总结
Jun 14 Javascript
jQuery实现的网页换肤效果示例
Sep 20 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
Nov 28 Javascript
详解JavaScript常量定义
Jan 03 Javascript
Vue.js 插件开发详解
Mar 29 Javascript
js获取一组日期中最近连续的天数
May 25 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
Oct 23 Javascript
如何根据业务封装自己的功能组件
Apr 19 Javascript
layer 关闭指定弹出层的例子
Sep 25 Javascript
Vue实现点击导航栏当前标签后变色功能
Aug 19 Javascript
JavaScript获取URL参数的方法分享
Apr 07 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
Jul 15 #Javascript
微信小程序开发技巧汇总
Jul 15 #Javascript
微信小程序中如何计算距离某个节日还有多少天
Jul 15 #Javascript
微信小程序基础教程之worker线程的使用方法
Jul 15 #Javascript
使用vue-router在Vue页面之间传递数据的方法
Jul 15 #Javascript
微信小程序在其他页面监听globalData中值的变化
Jul 15 #Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
Jul 15 #Javascript
You might like
第七节 类的静态成员 [7]
2006/10/09 PHP
php微信公众平台开发之获取用户基本信息
2015/08/17 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
jQuery 插件 将this下的div轮番显示
2009/04/09 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
在vue中多次调用同一个定义全局变量的实例
2018/09/25 Javascript
浅析vue-router原理
2018/10/19 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
Vue如何实现验证码输入交互
2020/12/07 Vue.js
关于uniApp editor微信滑动问题
2021/01/15 Javascript
用Python进行行为驱动开发的入门教程
2015/04/23 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
python创建学生管理系统
2019/11/22 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
python里反向传播算法详解
2020/11/22 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
数据库专业英语
2012/11/30 面试题
感恩节活动方案
2014/01/27 职场文书
《狐假虎威》教学反思
2014/02/07 职场文书
乳制品整治工作方案
2014/05/29 职场文书
2014年政教处工作总结
2014/12/20 职场文书
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers