ajax下载文件

本文介绍了一种在存在Token鉴权的情况下实现Excel模板文件下载的方法。通过使用Axios库进行HTTP请求,并通过响应类型设置来获取文件数据,再通过Blob对象创建下载链接完成文件下载。文章还提供了一个具体的下载功能实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇到个项目 有token鉴权,所有下载都不能直接给链接,学习后然后就有了以下的

// 下载设备管理excel 模板
export const personTemplate = (params, type, URL) => {
return Axios.get(URL, { responseType: 'arraybuffer' }
).then(res => {
if (type === 1 && params !== null) {
var fileName = params + '模板.xlsx'
} else if (type === 2 && params === null) {
fileName = '列表.xlsx'
}
let blob = new Blob([res.data], { type: 'application/x-xls' })
if (navigator.appVersion.toString().indexOf('.NET') > 0) {
window.navigator.msSaveBlob(blob, fileName)
} else {
let link = document.createElement('a')
link.href = window.URL.createObjectURL(blob)
link.download = fileName
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
}
return res.data
})
}

记录一下以后备用


同事提醒优化后

export function personTemplate (data) {
return Axios({
url: '/scp-mdmapp/user/downloadUsers',
method: 'get',
params: data,
responseType: 'arraybuffer'
})
}

调用

/**
* @description 导出按钮
*/
onDownload: function () {
let param = {}
param.houseUuid = this.exportHouseNode.houseUuid
param.orgUuid = this.exportHouseNode.orgUuid
param.name = this.personSearch.name
param.userType = this.personSearch.userType
param.sex = this.personSearch.sex
personTemplate(param)
.then(res => {
let fileName = '人员列表.xlsx'
let blob = new Blob([res.data], { type: 'application/x-xls' })
if (navigator.appVersion.toString().indexOf('.NET') > 0) {
window.navigator.msSaveBlob(blob, fileName)
} else {
let link = document.createElement('a')
link.href = window.URL.createObjectURL(blob)
link.download = fileName
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
}
})
.catch(err => {
this.$message({
message: '服务器连接异常',
type: 'warning'
})
console.warn(LOG_TAG + '人员导出下载err')
console.warn(err)
})
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值