Browse Source

feat: 任何文件失败都提示zip上传

main
buaixuexideshitongxue 1 month ago
parent
commit
bdc1b6da77
  1. 24
      src/components/file/upload.vue

24
src/components/file/upload.vue

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

Loading…
Cancel
Save