|
|
|
|
@ -61,7 +61,7 @@ const files = ref(props.files);
|
|
|
|
|
const allowArchiveFallback = ref(false); |
|
|
|
|
const fallbackArchiveExts = ['zip', 'rar', '7z']; |
|
|
|
|
const archiveExts = [...fallbackArchiveExts, 'tar', 'gz', 'bz2', 'xz', 'iso', 'dmg']; |
|
|
|
|
const pdfResponseTimeout = 15000; |
|
|
|
|
const uploadResponseTimeout = 15000; |
|
|
|
|
const responseTimers = new Map(); |
|
|
|
|
|
|
|
|
|
function getFileExt(file) { |
|
|
|
|
@ -70,11 +70,11 @@ function getFileExt(file) {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function enableArchiveFallback(file) { |
|
|
|
|
if (getFileExt(file) !== 'pdf') { |
|
|
|
|
if (archiveExts.includes(getFileExt(file))) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
allowArchiveFallback.value = true; |
|
|
|
|
feedback.msgError('PDF上传失败,已临时允许上传一个 ZIP、RAR 或 7Z 压缩包'); |
|
|
|
|
feedback.msgError('文件上传失败,已临时允许上传一个 ZIP、RAR 或 7Z 压缩包'); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -86,15 +86,15 @@ function clearResponseTimer(file) {
|
|
|
|
|
responseTimers.delete(file?.uid); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function startPdfResponseTimer(file) { |
|
|
|
|
if (getFileExt(file) !== 'pdf' || responseTimers.has(file?.uid)) { |
|
|
|
|
function startUploadResponseTimer(file) { |
|
|
|
|
if (archiveExts.includes(getFileExt(file)) || responseTimers.has(file?.uid)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
const timer = window.setTimeout(() => { |
|
|
|
|
responseTimers.delete(file.uid); |
|
|
|
|
uploadRef.value?.abort(file); |
|
|
|
|
handleError(new Error('PDF保存响应超时'), file); |
|
|
|
|
}, pdfResponseTimeout); |
|
|
|
|
handleError(new Error('文件保存响应超时'), file); |
|
|
|
|
}, uploadResponseTimeout); |
|
|
|
|
responseTimers.set(file.uid, timer); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -132,11 +132,11 @@ function beforeUpload(file) {
|
|
|
|
|
|
|
|
|
|
if (archiveExts.includes(ext)) { |
|
|
|
|
if (!allowArchiveFallback.value) { |
|
|
|
|
feedback.msgWarning('压缩包仅在 PDF 上传失败后允许上传') |
|
|
|
|
feedback.msgWarning('压缩包仅在文件上传失败后允许上传') |
|
|
|
|
return false |
|
|
|
|
} |
|
|
|
|
if (!fallbackArchiveExts.includes(ext)) { |
|
|
|
|
feedback.msgWarning('PDF 上传失败后仅支持 ZIP、RAR 或 7Z 压缩包') |
|
|
|
|
feedback.msgWarning('文件上传失败后仅支持 ZIP、RAR 或 7Z 压缩包') |
|
|
|
|
return false |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -149,7 +149,7 @@ function beforeUpload(file) {
|
|
|
|
|
if (fallbackArchiveExts.includes(ext)) { |
|
|
|
|
allowArchiveFallback.value = false; |
|
|
|
|
} |
|
|
|
|
if (ext === 'pdf') { |
|
|
|
|
if (!archiveExts.includes(ext)) { |
|
|
|
|
allowArchiveFallback.value = false; |
|
|
|
|
} |
|
|
|
|
files.value.push({ |
|
|
|
|
@ -166,7 +166,7 @@ function uploadProgress(progressEvent, file) {
|
|
|
|
|
const percent = parseInt(progressEvent.percent); |
|
|
|
|
filterFiles[0].percent = Math.min(99, percent); |
|
|
|
|
if (percent >= 100) { |
|
|
|
|
startPdfResponseTimer(file); |
|
|
|
|
startUploadResponseTimer(file); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -184,7 +184,7 @@ function handleSuccess(data, file) {
|
|
|
|
|
} |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (getFileExt(file) === 'pdf') { |
|
|
|
|
if (!archiveExts.includes(getFileExt(file))) { |
|
|
|
|
allowArchiveFallback.value = false; |
|
|
|
|
} |
|
|
|
|
if (filterFiles.length) { |
|
|
|
|
|