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基础语法介绍
Feb 28 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
Apr 07 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
Jun 06 Javascript
jquery实现不包含当前项的选择器实例
Jun 25 Javascript
JavaScript简单修改窗口大小的方法
Aug 03 Javascript
js实现鼠标点击左上角滑动菜单效果代码
Sep 06 Javascript
js倒计时抢购实例
Dec 20 Javascript
JS检测移动端横竖屏的代码
May 30 Javascript
js方法数据验证的简单实例
Sep 17 Javascript
Vue实现双向数据绑定
May 03 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
Dec 02 Javascript
基于JavaScript实现简单抽奖功能代码实例
Oct 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
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
基于daterangepicker日历插件使用参数注意的问题
2017/08/10 Javascript
原生js实现trigger方法示例代码
2019/05/22 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
原生JS实现记忆翻牌游戏
2020/07/31 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
Python解决八皇后问题示例
2018/04/22 Python
Python常见内置高效率函数用法示例
2018/07/31 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
个人找工作的自我评价
2013/10/17 职场文书
普通大学毕业生自荐信
2013/11/04 职场文书
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
材料物理专业个人求职信
2013/12/15 职场文书
函授教育个人学习的自我评价
2013/12/31 职场文书
大学本科生职业生涯规划书范文
2014/09/14 职场文书
个人债务授权委托书
2014/10/17 职场文书
上课睡觉检讨书300字
2014/11/18 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
运动会5000米加油稿
2015/07/21 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js