| ruoyi-ui/src/plugins/download.js | ●●●●● patch | view | raw | blame | history | |
| ruoyi-ui/src/utils/request.js | ●●●●● patch | view | raw | blame | history | |
| ruoyi-ui/src/utils/ruoyi.js | ●●●●● patch | view | raw | blame | history |
ruoyi-ui/src/plugins/download.js
@@ -1,6 +1,8 @@ import { saveAs } from 'file-saver' import axios from 'axios' import { Message } from 'element-ui' import { saveAs } from 'file-saver' import { getToken } from '@/utils/auth' import { blobValidate } from "@/utils/ruoyi"; const baseURL = process.env.VUE_APP_BASE_API @@ -12,9 +14,14 @@ url: url, responseType: 'blob', headers: { 'Authorization': 'Bearer ' + getToken() } }).then(res => { const blob = new Blob([res.data], { type: 'application/zip' }) this.saveAs(blob, name) }).then(async (res) => { const isLogin = await blobValidate(res.data); if (isLogin) { const blob = new Blob([res.data], { type: 'application/zip' }) this.saveAs(blob, name) } else { Message.error('无效的会话,或者会话已过期,请重新登录。'); } }) }, saveAs(text, name, opts) { ruoyi-ui/src/utils/request.js
@@ -3,7 +3,7 @@ import store from '@/store' import { getToken } from '@/utils/auth' import errorCode from '@/utils/errorCode' import { tansParams } from "@/utils/ruoyi"; import { tansParams, blobValidate } from "@/utils/ruoyi"; import { saveAs } from 'file-saver' let downloadLoadingInstance; @@ -43,6 +43,10 @@ const code = res.data.code || 200; // 获取错误信息 const msg = errorCode[code] || res.data.msg || errorCode['default'] // 二进制数据则直接返回 if(res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer'){ return res.data } if (code === 401) { MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', @@ -98,10 +102,14 @@ transformRequest: [(params) => { return tansParams(params) }], headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, responseType: 'blob' }).then((data) => { const content = data const blob = new Blob([content]) saveAs(blob, filename) }).then(async (data) => { const isLogin = await blobValidate(data); if (isLogin) { const blob = new Blob([data]) saveAs(blob, filename) } else { Message.error('无效的会话,或者会话已过期,请重新登录。'); } downloadLoadingInstance.close(); }).catch((r) => { console.error(r) ruoyi-ui/src/utils/ruoyi.js
@@ -214,3 +214,14 @@ } return result } // 验证是否为blob格式 export async function blobValidate(data) { try { const text = await data.text(); JSON.parse(text); return false; } catch (error) { return true; } }