使用vue 对二进制文件 实现下载(blob对象
有很多网站会涉及到文件下载,这里我们使用axios 发送请求 接受数据
第一步 模仿jQ 封装接口
Vue.prototype.$xlsx_post = function (url, data, fun, err) {
var userName = getCookie("username")
axios({
method: 'post',
url: url,
responseType: "blob",
headers: {
'Authorization': userName ? userName.token_type + userName.access_token : "Basic emh4eTp6aHh5"
},
data: data
}).then(function (res) {
if (fun) {
fun(res)
}
})
.catch(function (error) {
if (err) {
err(error)
}
});
}
注意 : responseType 要设置为 blob 告诉服务器你期望的响应格式。
第二步 发送请求 接受数据
this.$xlsx_post(
`/rsgl/rstrainperson/exportExcel`,
{
trainId: this.$route.query.id,
userId: this.multipleSelection.join(",")
},
res => {
const blob = new Blob([res]); // 创建blob对象
const fileName = "培训管理.xlsx";
const elink = document.createElement("a"); // 创建的标签
elink.download = fileName;
elink.style.display = "none";
elink.href = URL.createObjectURL(blob); // 创建url
document.body.appendChild(elink); // 把 创建的标签追加到body里
elink.click();
URL.revokeObjectURL(elink.href); // 释放URL 对象
document.body.removeChild(elink); // 移除标签
this.$message({
message: "导出成功!!!",
type: "success"
});
this.$refs.multipleTable.clearSelection();
},
err => {
this.$message.error("服务器错误");
throw err;
}
);
好了, 希望对大家有所帮助
使用vue 对二进制文件 实现下载(blob对象的更多相关文章
- Taro文件上传:Blob Url下载Blob对象本身并通过接口上传到服务器
最近项目的文件上传遇到一个问题,就是Taro的chooseImage传给回调的是一个Blob对象,一般来说,上传控件都会导出Data Url,而Taro给了一个Blob Url,问题在于,我直接令im ...
- vue 二进制文件的下载(解决乱码和解压报错)
问题描述:项目中使用的是vue框架进行开发,因为文件下载存在权限问题,所以并不能通过 a 链接的 href 属性直接赋值 URL进行下载, (如果你的文件没有下载权限,可以直接通过href属性赋值UR ...
- blob - 二进制文件流下载
/** * 返回值文件类型为 blob 二进制流文件 * responseType: 'blob' * params 接口所需参数 * 命名文件名:依据时间戳命名文件名 * (导出时需要延迟,否则导出 ...
- Vue通过Blob对象实现导出Excel功能
不同的项目有不同的导出需求,有些只导出当前所显示结果页面的表格进入excel,这个时候就有很多插件,比如vue-json-excel或者是Blob.js+Export2Excel.js来实现导出Exc ...
- 【前端知乎系列】ArrayBuffer 和 Blob 对象
本文首发在 个人博客 更多丰富的前端学习资料,可以查看我的 Github: <Leo-JavaScript>,内容涵盖数据结构与算法.HTTP.Hybrid.面试题.React.Angul ...
- vue通过get方法下载java服务器excel模板
vue方法 handleDownTemplateXls(fileName){ if(!fileName || typeof fileName != "string"){ fileN ...
- [HTML5] Blob对象
写在前面 本篇主要总结Blob对象属性及作用,通过DEMO介绍Blob对象的应用场景. Blob对象 一直以来,JS都没有比较好的可以直接处理二进制的方法.而Blob的存在,允许我们可以通过JS直接操 ...
- JS 之Blob 对象类型
原文 http://blog.csdn.net/oscar999/article/details/36373183 什么是Blob? Blob 是什么? 这里说的是一种Javascript的对象类型. ...
- 利用 jQuery-photoClip插件 实现移动端裁剪功能并以Blob对象上传
最近客户要求实现论坛贴子附件裁剪功能,没有考虑js与ios.android容器交互解决方案,单纯用js去实现它的.由于本来附件上传用的别的插件实现的,所以是在此基础上费了不少劲,才把jQuery-ph ...
随机推荐
- 开发者必知的8款App快速开发工具开发者必知的8款App快速开发工具
"我有一个好创意,就差一个CTO……" "原生APP开发难度大,周期长,成本高,还没上线市场已经被占领了." "APP版本迭代更新,都是企业的一道难关 ...
- 错误处理——According to TLD or attribute directive in tag file, attribute test does not accept any expres
应用部署运行的时候出现JSP异常, 发生在使用JSTL库的时候: According to TLD or attribute directive in tag file, attribute valu ...
- MapReduce数据流-Mapper
- Strange Way to Express Integers
I. Strange Way to Express Integers 题目描述 原题来自:POJ 2891 给定 2n2n2n 个正整数 a1,a2,⋯,ana_1,a_2,\cdots ,a_na ...
- PAN-OS 6.1 Open Source Software (OSS) Listing
https://www.paloaltonetworks.com/documentation/oss-listings/oss-listings/pan-os-oss-listings/pan-os- ...
- E. Remainder Problem 分块
两个操作 1对x位置的a[x]+y 2对所有i=y(mod x)求a[i]的和 我们肯定不能n^2 跑,稳超时,但是我们可以这样分块考虑. 为什么n^2不行?因为在x比较小的时候,这个求和操作次数太多 ...
- js后端返回一个时间戳,用原生怎么对时间进行格式化?
function fn(time) { var date = new Date(time); var len = time.toString().length; // 时间戳不足13位则在后面加零 i ...
- H3C NAT Server配置举例
- js将单个反斜杠转化为斜杠的问题
var two="https://192.255.255.255:3215/2019/2/26/16/13/b2e8929483c66cefddbe1e49a007e3f8-47358FC3 ...
- C# 操作XML学习笔记
1. Customers.xml <?xml version="1.0" encoding="utf-8"?> <cust:customers ...