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 控制页面跳转的5种方法
Sep 09 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
May 04 Javascript
javascript文本框内输入文字倒计数的方法
Feb 24 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
Feb 25 Javascript
JavaScript中的anchor()方法使用详解
Jun 08 Javascript
jQuery实现二级下拉菜单效果
Jan 05 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
May 25 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
Oct 24 Javascript
node.js 用socket实现聊天的示例代码
Oct 17 Javascript
vue-cli webpack 引入swiper的操作方法
Sep 15 Javascript
小程序点餐界面添加购物车左右摆动动画
Sep 23 Javascript
JavaScript ES 模块的使用
Nov 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多线程模拟实现秒杀抢单
2018/02/07 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
EasyUI中的tree用法介绍
2011/11/01 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
ECHO.js 纯javascript轻量级延迟加载的实例代码
2016/05/24 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
js实现五星评价功能
2017/03/08 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
Python基于twisted实现简单的web服务器
2014/09/29 Python
python中的随机函数小结
2018/01/27 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
如何通过python检查文件是否被占用
2020/12/18 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
创业计划书的内容步骤和要领
2014/01/04 职场文书
教师绩效工资方案
2014/02/01 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
学雷锋倡议书
2015/01/19 职场文书
收银员岗位职责
2015/02/03 职场文书
入队仪式主持词
2015/07/04 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android