Vue利用Blob下载原生二进制数组文件


Posted in Javascript onSeptember 25, 2019

本文实例为大家分享了Vue利用Blob下载原生二进制数组文件的具体代码,供大家参考,具体内容如下

在服务端推送过来的二进制数组(JSON格式),在前端要处理成JS原生数组以后才能做成Blob,有两个地方要注意(详细注释),代码如下:

Vue.prototype.$downloadFile = (filename, data) => {
 if (!data) return;
 let arr8 = Uint8Array.from(data); //!!!注意1:应根据数据的类型选择适当的JS原生数组类型进行转换,也就是说服务端推送的byte型数组还是int型数组等。
 //定义文件内容,类型必须为Blob 否则createObjectURL会报错
 let blob = null;
 let type = 'application/octet-binary';
 if (typeof (window.Blob) == "function") {
  blob = new Blob([arr8], {//!!!注意2:数组两边必须加上[]
   type: type
  });
 } else {
  let BlobBuilder = window.BlobBuilder || window.MozBlobBuilder || window.WebKitBlobBuilder || window.MSBlobBuilder;
  let bb = new BlobBuilder();
  bb.append([arr8]);
  blob = bb.getBlob(type);
 }
 let URL = window.URL || window.webkitURL;
 let bloburl = URL.createObjectURL(blob);
 let anchor = document.createElement("a");
 if ('download' in anchor) {
  anchor.style.visibility = "hidden";
  anchor.href = bloburl;
  anchor.download = filename;
  document.body.appendChild(anchor);
  let evt = document.createEvent("MouseEvents");
  evt.initEvent("click", true, true);
  anchor.dispatchEvent(evt);
  document.body.removeChild(anchor);
 } else if (navigator.msSaveBlob) {
  navigator.msSaveBlob(blob, filename);
 } else {
  location.href = bloburl;
 } //移除链接释放资源
};

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript操纵Cookie实现购物车程序
Nov 23 Javascript
JAVASCRIPT  THIS详解 面向对象
Mar 25 Javascript
js中的值类型和引用类型小结 文字说明与实例
Dec 12 Javascript
js中将具有数字属性名的对象转换为数组
Mar 06 Javascript
JavaScript开发人员的10个关键习惯小结
Dec 05 Javascript
javascript折半查找详解
Jan 26 Javascript
在Python中使用glob模块查找文件路径的方法
Jun 17 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
Sep 01 Javascript
简单解析JavaScript中的__proto__属性
May 10 Javascript
js继承实现方法详解
Dec 16 Javascript
js上下视差滚动简单实现代码
Mar 07 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
Jul 20 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
Sep 25 #Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
Sep 25 #Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
Sep 25 #Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
Sep 25 #Javascript
vue+axios实现post文件下载
Sep 25 #Javascript
vue + axios get下载文件功能
Sep 25 #Javascript
layer.open组件获取弹出层页面变量、函数的实例
Sep 25 #Javascript
You might like
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
javascript实现禁止复制网页内容
2014/12/16 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
安全资金保障制度
2014/01/23 职场文书
优秀员工获奖感言
2014/03/01 职场文书
公司担保书格式范文
2014/05/12 职场文书
升学宴祝酒词
2015/08/11 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python