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 相关文章推荐
JS的IE和Firefox兼容性集锦
Dec 11 Javascript
5 cool javascript apps
Mar 24 Javascript
深入理解JavaScript定时机制
Oct 29 Javascript
js获取滚动距离的方法
May 30 Javascript
在Javascript中处理字符串之big()方法的使用
Jun 08 Javascript
基于javascript实现图片左右切换效果
Jan 25 Javascript
基于JQuery打造无缝滚动新闻步骤详解
Mar 31 Javascript
Bootstrap Table使用整理(五)之分页组合查询
Jun 09 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
May 05 Javascript
js实现左右两侧浮动广告
Jul 09 Javascript
layui框架与SSM前后台交互的方法
Sep 12 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
Nov 12 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解析xml 的四种简单方法(附实例)
2016/07/11 PHP
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
基于JavaScript实现的顺序查找算法示例
2017/04/14 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
使用JavaScript实现一个小程序之99乘法表
2017/09/21 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
详细解读Python中的__init__()方法
2015/05/02 Python
python单例模式的多种实现方法
2019/07/26 Python
python 变量初始化空列表的例子
2019/11/28 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
python 解决selenium 中的 .clear()方法失效问题
2020/09/01 Python
django有哪些好处和优点
2020/09/01 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
巴黎一票通:The Paris Pass
2018/02/10 全球购物
德国网上花店:Valentins
2018/08/15 全球购物
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
财务人员个人自荐信范文
2013/09/26 职场文书
运动会通讯稿400字
2014/01/28 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
六一儿童节活动总结
2014/08/27 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
销售经理工作检讨书
2015/02/19 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
优秀员工自荐书
2015/03/06 职场文书