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面向对象成果 借国庆发布个最新作品与大家交流
Oct 03 Javascript
jQuery Mobile 导航栏代码
Nov 01 Javascript
AngularJS模块管理问题的非常规处理方法
Apr 29 Javascript
ECMAScript5(ES5)中bind方法使用小结
May 07 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
Jan 05 Javascript
JavaScript实现广告弹窗效果
Aug 09 Javascript
微信小程序 css使用技巧总结
Jan 09 Javascript
jQuery实现移动端Tab选项卡效果
Mar 15 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
Apr 27 Javascript
基于游标的分页接口实现代码示例
Nov 12 Javascript
vue watch监控对象的简单方法示例
Jan 07 Vue.js
教你一步步实现一个简易promise
Nov 02 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的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
javascript 单选框,多选框美化代码
2008/08/01 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
window.open()实现post传递参数
2015/03/12 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
一个可复用的vue分页组件
2017/05/15 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
Python实现的字典值比较功能示例
2018/01/08 Python
Python当中的array数组对象实例详解
2019/06/12 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
pybind11在Windows下的使用教程
2019/07/04 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
Funko官方商店:源自美国,畅销全球搪胶收藏玩偶
2018/09/15 全球购物
经典大学生求职信范文
2014/01/06 职场文书
教师自我剖析材料
2014/09/29 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
父母教会我观后感
2015/06/17 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL