Skip to content

Commit 00b7049

Browse files
committed
🐛 修复在 A 目录下上传的文件,没上传完时,切换到 B 目录,会上传到 B 目录。
1 parent a501306 commit 00b7049

File tree

1 file changed

+25
-58
lines changed

1 file changed

+25
-58
lines changed

src/composables/file/useFileUpload.js

Lines changed: 25 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -110,57 +110,31 @@ export default function useFileUpload() {
110110
return;
111111
}
112112

113-
// 检测出上传文件中包含隐藏文件的索引
114-
let hiddenFileIndexArray = [];
115-
116-
fileList.forEach((item, index) => {
117-
if (item.name === '.DS_Store') {
118-
hiddenFileIndexArray.push(index);
119-
}
120-
})
121-
122113
const uploadFileAction = () => {
123114
visible.value = true;
124115
fileList.forEach((item) => {
125116
beforeUpload({
126-
file: item
117+
file: item,
118+
uploadToPath: currentPath.value
127119
});
128120
})
129121
}
130122

131-
if (hiddenFileIndexArray.length > 0) {
132-
ElMessageBox.confirm(`检测到有 ${hiddenFileIndexArray.length} 个 .DS_Store 文件,是否上传时跳过这些文件`, '提示', {
133-
confirmButtonText: '跳过这些文件',
134-
cancelButtonText: '依旧上传',
123+
// 上传文件过多时,提示.
124+
if (fileList.length > 100) {
125+
ElMessageBox.confirm(`文件数量为 ${fileList.length} 个,是否确认上传?`, '提示', {
126+
confirmButtonText: '确定',
127+
cancelButtonText: '取消',
135128
type: 'success',
136129
callback: (action) => {
137130
if (action === 'confirm') {
138-
for (let i = hiddenFileIndexArray.length - 1; i >= 0; i--) {
139-
let index = hiddenFileIndexArray[i];
140-
fileList.splice(index, 1);
141-
}
131+
uploadFileAction();
142132
}
143-
uploadFileAction();
144133
}
145134
});
146135
} else {
147-
// 上传文件过多时,提示.
148-
if (fileList.length > 100) {
149-
ElMessageBox.confirm(`文件数量为 ${fileList.length} 个,是否确认上传?`, '提示', {
150-
confirmButtonText: '确定',
151-
cancelButtonText: '取消',
152-
type: 'success',
153-
callback: (action) => {
154-
if (action === 'confirm') {
155-
uploadFileAction();
156-
}
157-
}
158-
});
159-
} else {
160-
uploadFileAction();
161-
}
136+
uploadFileAction();
162137
}
163-
164138
})
165139
}
166140

@@ -376,31 +350,18 @@ export default function useFileUpload() {
376350
})
377351
}
378352

379-
// 上传前的检查
353+
/**
354+
* 上传文件前的一些操作
355+
* @param param
356+
*/
380357
const beforeUpload = (param) => {
381-
let findResult = fileDataStore.fileList.find((value) => {
382-
if (value.name === param.file.name) {
383-
return value;
384-
}
385-
})
386-
387-
if (findResult) {
388-
ElNotification({
389-
zIndex: 9999,
390-
title: '提示',
391-
message: `当前目录已存在文件 ${findResult.name}, 跳过上传.`,
392-
type: 'warning',
393-
})
394-
return;
395-
}
396-
397-
uploadFile(param.file);
358+
uploadFile(param.file, param.uploadToPath);
398359
}
399360

400361
// 文件上传操作.
401-
const uploadFile = (file) => {
362+
const uploadFile = (file, uploadToPath) => {
402363
const fileIndex = uploadIndex++;
403-
let uploadToPath = currentPath.value;
364+
uploadToPath = uploadToPath || currentPath.value;
404365

405366
// 如果包含 webkitRelativePath, 则表示是文件夹上传, 需要获取文件完整路径
406367
if (file.webkitRelativePath || file.dropUploadPath) {
@@ -436,6 +397,7 @@ export default function useFileUpload() {
436397
waitingFileList.push({
437398
index: fileIndex,
438399
file: file,
400+
uploadToPath: uploadToPath,
439401
});
440402
return;
441403
}
@@ -528,7 +490,11 @@ export default function useFileUpload() {
528490
let end = 0; // 结束字节数
529491
let fileSize = file.size; // 文件大小
530492
const MAX_FILE_SIZE = 104857599; // 每块大小 100M
531-
let chunks = Math.ceil(fileSize / MAX_FILE_SIZE); // 块的个数
493+
494+
if (fileSize === 0) {
495+
baseOnUploadError(fileIndex, '当前存储类型不支持上传空文件');
496+
return;
497+
}
532498

533499
// 分块上传
534500
const uploadBlock = () => {
@@ -571,7 +537,7 @@ export default function useFileUpload() {
571537
start += MAX_FILE_SIZE;
572538
index += 1;
573539
uploadBlock();
574-
} else if (response.status === 201) {
540+
} else if (response.status === 201 || response.status === 200) {
575541
// console.log('file upload full success.', start, end);
576542
baseOnUploadFinish(fileIndex);
577543
}
@@ -716,7 +682,8 @@ export default function useFileUpload() {
716682
let spliceList = waitingFileList.splice(0, 1);
717683
let fileItem = spliceList[0];
718684
beforeUpload({
719-
file: fileItem.file
685+
file: fileItem.file,
686+
uploadToPath: fileItem.uploadToPath
720687
});
721688
console.log('开始从等待队列中获取上传文件: ', fileItem.file.name);
722689
}

0 commit comments

Comments
 (0)