axios封装导出功能

This commit is contained in:
zyn
2023-04-20 15:31:43 +08:00
parent d628190d75
commit db2135d101
+33
View File
@@ -585,4 +585,37 @@ export default {
})
},
_downloadFile (url, params, method = 'get', fileName = '导出文件') {
_axios({
method,
url,
data: method !== 'get' ? params : {},
params: method === 'get' ? params : {},
responseType: 'blob'
}).then(
res => {
const data = res.data
// 兼容ie
if (window.navigator.msSaveOrOpenBlob) {
try {
const blobObject = new Blob([data])
window.navigator.msSaveOrOpenBlob(blobObject, fileName)
} catch (e) {
console.log(e)
}
return
}
// a标签实现下载
// type为导出文件格式 例application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 导出为xlsx格式
let url = window.URL.createObjectURL(new Blob([data], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }))
let a = document.createElement('a')
a.style.display = 'none'
a.href = url
a.setAttribute('download', fileName)
document.body.appendChild(a)
a.click()
document.body.removeChild(a);
URL.revokeObjectURL(url); // 释放对象URL
})
},
}