@@ -110,57 +110,31 @@ export default function useFileUpload() {
110
110
return ;
111
111
}
112
112
113
- // 检测出上传文件中包含隐藏文件的索引
114
- let hiddenFileIndexArray = [ ] ;
115
-
116
- fileList . forEach ( ( item , index ) => {
117
- if ( item . name === '.DS_Store' ) {
118
- hiddenFileIndexArray . push ( index ) ;
119
- }
120
- } )
121
-
122
113
const uploadFileAction = ( ) => {
123
114
visible . value = true ;
124
115
fileList . forEach ( ( item ) => {
125
116
beforeUpload ( {
126
- file : item
117
+ file : item ,
118
+ uploadToPath : currentPath . value
127
119
} ) ;
128
120
} )
129
121
}
130
122
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 : '取消' ,
135
128
type : 'success' ,
136
129
callback : ( action ) => {
137
130
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 ( ) ;
142
132
}
143
- uploadFileAction ( ) ;
144
133
}
145
134
} ) ;
146
135
} 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 ( ) ;
162
137
}
163
-
164
138
} )
165
139
}
166
140
@@ -376,31 +350,18 @@ export default function useFileUpload() {
376
350
} )
377
351
}
378
352
379
- // 上传前的检查
353
+ /**
354
+ * 上传文件前的一些操作
355
+ * @param param
356
+ */
380
357
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 ) ;
398
359
}
399
360
400
361
// 文件上传操作.
401
- const uploadFile = ( file ) => {
362
+ const uploadFile = ( file , uploadToPath ) => {
402
363
const fileIndex = uploadIndex ++ ;
403
- let uploadToPath = currentPath . value ;
364
+ uploadToPath = uploadToPath || currentPath . value ;
404
365
405
366
// 如果包含 webkitRelativePath, 则表示是文件夹上传, 需要获取文件完整路径
406
367
if ( file . webkitRelativePath || file . dropUploadPath ) {
@@ -436,6 +397,7 @@ export default function useFileUpload() {
436
397
waitingFileList . push ( {
437
398
index : fileIndex ,
438
399
file : file ,
400
+ uploadToPath : uploadToPath ,
439
401
} ) ;
440
402
return ;
441
403
}
@@ -528,7 +490,11 @@ export default function useFileUpload() {
528
490
let end = 0 ; // 结束字节数
529
491
let fileSize = file . size ; // 文件大小
530
492
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
+ }
532
498
533
499
// 分块上传
534
500
const uploadBlock = ( ) => {
@@ -571,7 +537,7 @@ export default function useFileUpload() {
571
537
start += MAX_FILE_SIZE ;
572
538
index += 1 ;
573
539
uploadBlock ( ) ;
574
- } else if ( response . status === 201 ) {
540
+ } else if ( response . status === 201 || response . status === 200 ) {
575
541
// console.log('file upload full success.', start, end);
576
542
baseOnUploadFinish ( fileIndex ) ;
577
543
}
@@ -716,7 +682,8 @@ export default function useFileUpload() {
716
682
let spliceList = waitingFileList . splice ( 0 , 1 ) ;
717
683
let fileItem = spliceList [ 0 ] ;
718
684
beforeUpload ( {
719
- file : fileItem . file
685
+ file : fileItem . file ,
686
+ uploadToPath : fileItem . uploadToPath
720
687
} ) ;
721
688
console . log ( '开始从等待队列中获取上传文件: ' , fileItem . file . name ) ;
722
689
}
0 commit comments