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 相关文章推荐
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
Mar 09 Javascript
JavaScript中的View-Model使用介绍
Aug 11 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
Oct 21 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
Mar 10 Javascript
IE和Firefox之间在JavaScript语法上的差异
Apr 22 Javascript
js生成随机数方法和实例
Jan 17 Javascript
AngularJS1.X学习笔记2-数据绑定详解
Apr 01 Javascript
Three.js基础学习教程
Nov 16 Javascript
浅谈React高阶组件
Mar 28 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
Jan 19 Javascript
微信小程序全选多选效果实现代码解析
Jan 21 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
Aug 17 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
如何把PHP转成EXE文件
2006/10/09 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
客户端静态页面玩分页
2006/06/26 Javascript
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
jquery自定义函数的多种方法
2014/01/09 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
老生常谈 js中this的指向
2016/06/30 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
Three.js基础部分学习
2017/01/08 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
vue 集成jTopo 处理方法
2019/08/07 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
使用python进行拆分大文件的方法
2018/12/10 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
工厂厂长的职责
2013/12/12 职场文书
电脑销售顾问自荐信
2014/01/29 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
2014年司法局工作总结
2014/12/11 职场文书
Python中with上下文管理协议的作用及用法
2022/03/18 Python
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技
Java 数组的使用
2022/05/11 Java/Android