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 相关文章推荐
JavaScipt基本教程之JavaScript语言的基础
Jan 16 Javascript
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
Dec 25 Javascript
在chrome中window.onload事件的一些问题
Mar 01 Javascript
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
Oct 11 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
Dec 17 Javascript
node.js中的console用法总结
Dec 15 Javascript
JavaScript 动态加载脚本和样式的方法
Apr 13 Javascript
Jquery技巧(必须掌握)
Mar 16 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 Javascript
VUE+Element环境搭建与安装的方法步骤
Jan 24 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
Jan 28 Javascript
基于javascript实现碰撞检测
Mar 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与php MySQL 之间的关系
2009/07/17 PHP
解析php做推送服务端实现ios消息推送
2013/07/01 PHP
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
php如何获取文件的扩展名
2015/10/28 PHP
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
基于Vue制作组织架构树组件
2017/12/06 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
对Python中9种生成新对象的方法总结
2018/05/23 Python
Python返回数组/List长度的实例
2018/06/23 Python
python绘制多个曲线的折线图
2020/03/23 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
如何基于python操作excel并获取内容
2019/12/24 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
如何表示python中的相对路径
2020/07/08 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
《果园机器人》教学反思
2014/04/13 职场文书
男女朋友协议书
2014/04/23 职场文书
乡镇党建工作总结2015
2015/05/19 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis