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 相关文章推荐
打开超链需要“确认”对话框的方法
Mar 08 Javascript
javascript网页关键字高亮代码
Jul 30 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
May 05 Javascript
Bootstrap表单组件教程详解
Apr 26 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
Feb 08 Javascript
jQuery简单实现MD5加密的方法
Mar 03 Javascript
关于axios不能使用Vue.use()浅析
Jan 12 Javascript
javascript用rem来做响应式开发
Jan 13 Javascript
JavaScript如何对图片进行黑白化
Apr 10 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
Aug 28 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
Jun 17 Javascript
如何实现vue的tree组件
Dec 03 Vue.js
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 array_values 返回数组的值实例详解
2016/11/17 PHP
修改js Calendar日历控件 兼容IE9/谷歌/火狐
2013/01/04 Javascript
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
JS调用CS里的带参方法实例
2013/08/01 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
老生常谈js数据类型
2017/08/03 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
redux.js详解及基本使用
2019/05/24 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
python和shell获取文本内容的方法
2018/06/05 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
python修改文件内容的3种方法详解
2019/11/15 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
浅谈three.js中的needsUpdate的应用
2012/11/12 HTML / CSS
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
Jdbc数据访问技术面试题
2012/03/30 面试题
超市优秀员工事迹材料
2014/05/01 职场文书
诉讼代理人授权委托书
2014/10/11 职场文书
离婚上诉状范文
2015/05/23 职场文书
升学宴家长致辞
2015/07/27 职场文书
预备党员入党感想
2015/08/10 职场文书
家庭聚会祝酒词
2015/08/11 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python
关于Python中*args和**kwargs的深入理解
2021/08/07 Python