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 相关文章推荐
jQuery的实现原理的模拟代码 -3 事件处理
Aug 03 Javascript
jQuery中:radio选择器用法实例
Jan 03 Javascript
BootStrap中Tab页签切换实例代码
May 30 Javascript
实现隔行换色效果的两种方式【实用】
Nov 27 Javascript
JS声明式函数与赋值式函数实例分析
Dec 13 Javascript
WebView启动支付宝客户端支付失败的问题小结
Jan 11 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
Jan 13 Javascript
jQuery中each循环的跳出和结束实例
Aug 16 jQuery
vue.js开发实现全局调用的MessageBox组件实例代码
Nov 22 Javascript
JS实现旋转木马轮播图
Jan 01 Javascript
vue 在单页面应用里使用二级套嵌路由
Dec 19 Vue.js
JavaScript最完整的深浅拷贝实现方式详解
Feb 28 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
各种战术和打法的原创者
2020/03/04 星际争霸
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
javascript oop开发滑动(slide)菜单控件
2010/08/25 Javascript
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
2010/11/11 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
详解JavaScript时间格式化
2015/12/23 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
jQuery使用方法
2017/02/04 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
销售竞赛活动方案
2014/08/23 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL