blob,token验证文件下载方法封装
程序员文章站
2022-04-14 11:20:07
项目中遇到需要文件下载的功能,使用window.open方式在新页面打开链接下载,但是新页面无法传递token信息,于是让后台关闭token验证。const exportUserUrl = `${_baseUrl}/sys/user/exportUser`;export const exportUserApi = function (json) { let data = `?areaId=${json.areaId}&areaType=${json.areaType}&id=$....
项目中遇到需要文件下载的功能,使用 window.open方式在新页面打开链接下载,但是新页面无法传递token信息,于是让后台关闭token验证。
const exportUserUrl = `${_baseUrl}/sys/user/exportUser`;
export const exportUserApi = function (json) {
let data = `?areaId=${json.areaId}&areaType=${json.areaType}&id=${json.id}&name=${json.name}&no=${json.no}&isDanger=${json.isDanger}&loginName=${json.loginName}&officeId=${json.officeId}`
window.open(exportUserUrl + data, '_blank')
}
但这样总归是不太好,于是使用下面的方法
// 封装下载方法
export function exportFile (url, params = {}) {
return new Promise((resolve, reject) => {
axios.get(url, {
params: params,
responseType: 'blob'
}).then(response => {
resolve(response)
}).catch(err => {
reject(err);
})
})
}
// 下载接口
export const exportDataApi = json => exportFile(`${_record}/highriskOperate/exportData`, json);
// 调用下载接口
let json = {}
exportDataApi(json).then(res => {
let fileName = 'test'
let blob = new Blob([res], { type: 'application/x-xls' })
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName);
} else {
let link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
link.click();
window.URL.revokeObjectURL(link.href);
}
})
本文地址:https://blog.csdn.net/qq_37167086/article/details/108977945
上一篇: 电脑版钉钉软件怎么发工作日志?