AngularJS 无刷新下载文件
发布日期:2021-10-16 12:05:05
浏览次数:8
分类:技术文章
本文共 1836 字,大约阅读时间需要 6 分钟。
/*** Excel文件下载*/MetronicApp.service('ExcelFileDownLoad', ['$http',function($http) { this.downLoad = function(url, data, fileName){ $http({ url: url, //请求文件地址,服务端返回的是二进制数据流 method: 'post', responseType: 'arraybuffer', //防止乱码 contentType: 'application/json', data: data }).success(function (data, status, headers) { //使用{type: "application/vnd.ms-excel"}的写法,可以保存为xls格式的excel文件(兼容老版本)。而使用“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”则会保存为xlsx //客户端接收后转换为指定文件格式的blob,最后创建blob对象的URL let blob = new Blob([data], {type:'application/vnd.ms-excel'}, decodeURI(headers(){ 'x-filename'})); //把它放在A标签的href上 就会自动下载了 var anchor = angular.element(''); // 创建a元素 anchor.attr({ href: URL.createObjectURL(blob), //blob对象的URL放在a链接上就自动下载 target: '_blank', download: fileName })[0].click(); //当前元素绑定单击事件 }) }}])···ExcelFileDownLoad.downLoad("/downloadExcel", $scope.vo, "标题")
知识点:blob —在客户端处理二进制数据的js对象类型,包含二进制数据的容器
认识blob对象
input标签有一个上传文件的类型,type=’file’,当用户点击上传文件后,会返回一个FileList对象,file对象就存在于FileList对象中,file对象继承自blob。// 参数一:需要被处理的数据序列,可以是任意格式的值;参数二:配置的参数,指定MIME类型let blob = new Blob([data], {type: "application/vnd.ms-excel"});// 属性// 1、blob.size ; 对象中所包含的数据的大小(字节)// 2、blob.type ; 一个字符串,表明该Blob对象所包含数据的MIME类型。如果类型未知,则该值为空字符串。// 方法// 1、blob.slice([index, length, contentType]) ;返回一个新的 Blob 对象,包含了源 Blob 对象中指定范围内的数据// 分片上传文件的案例let chunk = 1024 * 1024; // 每个文件切片大小定为1MBlet file = document.getElementById("file"); //获取input文件initUpload();function initUpload(){ file.onchange = function(){ let blob = file.files[0]; let blobs = []; if(blob){ for(let i=0;i
转载地址:https://blog.csdn.net/snow51/article/details/81120794 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月11日 10时48分52秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
5.3 使用SQLite数据库
2019-04-27
5.4 使用PostgreSQL数据库
2019-04-27
5.5 使用beedb库进行ORM开发
2019-04-27
5.6 NOSQL数据库操作
2019-04-27
第六章 session和数据存储
2019-04-27
6.1 session和cookie
2019-04-27
6.2 Go如何使用session
2019-04-27
7.5 文件操作
2019-04-27
12.4 备份和恢复
2019-04-27
第十三章 如何设计一个Web框架
2019-04-27
13.1 项目规划
2019-04-27
13.2 自定义路由器设计
2019-04-27
13.3 controller设计
2019-04-27
13.4 日志和配置设计
2019-04-27
13.5 实现博客的增删改
2019-04-27
第十四章 扩展Web框架
2019-04-27
Go语言教程拓展基础篇 (查漏补缺, 献给初学者)
2019-04-27
14.1 静态文件支持
2019-04-27
OS X v10.8 to OS X v10.9 API 差异
2019-04-27
cocos2dx多线程以及线程同步 与 cocos2dx内存管理与多线程问题
2019-04-27