前言
本文并不能直接复制到本地看效果,仅提供代码参考
1.使用axios的方式携带请求头token
2.设置响应的数据类型
responseType: "blob"
3.请求成功,返回二进制文件的数据回来
4.请求失败,返回json
5.示例代码
<template>
<div>
<el-button type="primary" size="small" :loading="btnLoading" @click="exportFile">导出</el-button>
</div>
</template>
<script>
import axios from "axios";
export default {
data() {
return {
btnLoading: false
};
},
methods: {
// responseType 响应类型
exportFile() {
this.btnLoading = true;
axios({
method: 'get',
url: '/api',
headers: {
token: '79faf82271944fe38c4f1d99be71bc9c'
},
responseType: "blob"
})
.then(res => {
this.btnLoading = false;
if (res.data.type) {
// 文件下载
const blob = new Blob([res.data], {
type: "application/vnd.ms-excel"
});
let link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.setAttribute('download', '导出文件.xlsx');
link.click();
link = null;
this.$message.success('导出成功');
} else {
// 返回json
this.$message.warning(res.data.msg);
}
})
.catch(err => {
this.btnLoading = false;
this.$message.error("下载失败");
});
}
}
};
</script>
补充知识:Vue项目导出功能、带token导出Excel
在vue后台管理项目中,目前我常用的就两种导出方式
一种是不需要携带token的,直接调用后台的接口,携带需要传递参数就行,具体实现代码如下:
在main.js封装指令
let baseDownloadUrl = 'http://xxxxxxx:8080' // 域名
const PATH = {
userList:'vue/export/userList' // 后台接口地址
}
// 封装v-out指令
Vue.directive('out', {
inserted: (el, binding) => {
el.addEventListener('click', () => {
console.log(binding.value) // 自定义指令传请求参数
let a = document.createElement('a') // 创建a标签
// 处理请求参数,在url后面拼接
let params = '"htmlcode">
<el-button
size="small" type="primary"
v-out="{
pathName: 'userList',
params: //{请求参数}
}"
>导出</el-button>
另一种导出方式则是带token导出,token封装在请求头里,在请求头里发送给后端
调用导出接口时,需要加参数:responseType: ‘blob' (必须要有的)
封装导出请求文件exportOut.js
export function expotOut (searchList, pathName, xlsName) {
// 获取时间,这一步是在下载时文件名带下载日期,例如:用户信息2020-04-27.xls,如无需要可以去掉
let d = new Date()
let month = (d.getMonth() + 1)
let day = d.getDate()
let time = d.getFullYear() + '-' + (String(month).length > 1 "htmlcode">
methods: {
// 导出
outFile () {
expotOut(this.searchList, // 导出请求参数
'userList', // 后台地址PATH对象的key
'用户信息'// 导出文件名字
)
},
}
以上这篇vue 导出文件,携带请求头token操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。


