fix:文件流下载返回非流文件错误提醒
This commit is contained in:
parent
537559f7db
commit
17d13217e5
@ -1,6 +1,7 @@
|
|||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { ElMessageBox, ElMessage, ElLoading } from 'element-plus'
|
import { ElMessageBox, ElMessage, ElLoading } from 'element-plus'
|
||||||
import { getToken } from '@/utils/auth'
|
import { getToken } from '@/utils/auth'
|
||||||
|
import errorCode from '@/utils/errorCode'
|
||||||
import useUserStore from '@/store/modules/user'
|
import useUserStore from '@/store/modules/user'
|
||||||
import { blobValidate } from '@/utils/ruoyi'
|
import { blobValidate } from '@/utils/ruoyi'
|
||||||
import { saveAs } from 'file-saver'
|
import { saveAs } from 'file-saver'
|
||||||
@ -156,44 +157,46 @@ export function postForm(url, data, config) {
|
|||||||
*/
|
*/
|
||||||
export async function downFile(url, params, config) {
|
export async function downFile(url, params, config) {
|
||||||
downloadLoadingInstance = ElLoading.service({ text: '正在下载数据,请稍候', background: 'rgba(0, 0, 0, 0.7)' })
|
downloadLoadingInstance = ElLoading.service({ text: '正在下载数据,请稍候', background: 'rgba(0, 0, 0, 0.7)' })
|
||||||
try {
|
|
||||||
const resp = await service.get(url, {
|
service
|
||||||
|
.get(url, {
|
||||||
params,
|
params,
|
||||||
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
||||||
responseType: 'blob',
|
responseType: 'blob',
|
||||||
...config
|
...config
|
||||||
})
|
})
|
||||||
const { data } = resp
|
.then(async (resp) => {
|
||||||
|
const { data } = resp
|
||||||
|
|
||||||
var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
|
const isLogin = await blobValidate(data)
|
||||||
var contentDisposition = decodeURI(resp.headers['content-disposition'])
|
if (isLogin) {
|
||||||
var result = patt.exec(contentDisposition)
|
var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
|
||||||
var fileName = result[1]
|
var contentDisposition = decodeURI(resp.headers['content-disposition'])
|
||||||
fileName = fileName.replace(/\"/g, '')
|
var result = patt.exec(contentDisposition)
|
||||||
|
var fileName = result[1]
|
||||||
|
fileName = fileName.replace(/\"/g, '')
|
||||||
|
|
||||||
const isLogin = await blobValidate(data)
|
const blob = new Blob([data])
|
||||||
if (isLogin) {
|
saveAs(blob, fileName)
|
||||||
const blob = new Blob([data])
|
} else {
|
||||||
saveAs(blob, fileName)
|
const resText = await data.text()
|
||||||
} else {
|
const rspObj = JSON.parse(resText)
|
||||||
const resText = await data.text()
|
const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
|
||||||
const rspObj = JSON.parse(resText)
|
|
||||||
const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
|
|
||||||
|
|
||||||
|
ElMessage({
|
||||||
|
message: errMsg,
|
||||||
|
type: 'error'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
downloadLoadingInstance.close()
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
message: errMsg,
|
message: '下载文件出现错误,请联系管理员!',
|
||||||
type: 'error'
|
type: 'error'
|
||||||
})
|
})
|
||||||
}
|
downloadLoadingInstance.close()
|
||||||
downloadLoadingInstance.close()
|
|
||||||
} catch (r) {
|
|
||||||
console.error(r)
|
|
||||||
ElMessage({
|
|
||||||
message: '下载文件出现错误,请联系管理员!',
|
|
||||||
type: 'error'
|
|
||||||
})
|
})
|
||||||
downloadLoadingInstance.close()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default service
|
export default service
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user