1234567891011121314151617181920212223242526272829303132 |
- import download from 'downloadjs';
- import { ElMessage } from 'element-plus';
- const downloadFile = (res: any, fileName: string = '导出日志.xlsx') => {
- // 判断是不是返回的是json,是json说明报错了,否则返回的是文本流
- const decoder = new TextDecoder('utf-8');
- const text = decoder.decode(res.data);
- // console.log(text)
- try {
- const errJson = JSON.parse(text)
- if (errJson.message) {
- ElMessage.closeAll()
- ElMessage.error(errJson.message)
- } else {
- // 可能是导出 json文件
- beginDownload(res, fileName)
- }
- } catch {
- beginDownload(res, fileName)
- }
- }
- function beginDownload(res: any, fileName: string) {
- // 用split是避免多次取值重复都好分割的情况,比如
- // attachment; filename="2022-12-06 21:34:35-SysLoginLog.xlsx", attachment; filename="2022-12-06 21:34:35-SysLoginLog.xlsx"
- const lastFileName = res.headers['content-disposition'] ? res.headers['content-disposition'].split(',')[0].replaceAll('attachment; filename="', '').replaceAll('"', '') : fileName;
- download(res.data, lastFileName, res.headers['content-type']);
- }
- export default downloadFile
|