@@ -971,60 +971,70 @@ function uploadFiles(params, callback) {
971
971
var taskList = [ ] ;
972
972
var count = params . files . length ;
973
973
util . each ( params . files , function ( fileParams , index ) {
974
- fs . stat ( fileParams . FilePath , function ( err , stat ) {
975
- var isDir = stat ? stat . isDirectory ( ) : false ;
976
- var FileSize = ( fileParams . ContentLength = stat ? stat . size : 0 ) ;
977
- var fileInfo = { Index : index , TaskId : '' } ;
978
-
979
- // 更新文件总大小
980
- TotalSize += FileSize ;
981
-
982
- // 整理 option,用于返回给回调
983
- util . each ( fileParams , function ( v , k ) {
984
- if ( typeof v !== 'object' && typeof v !== 'function' ) {
985
- fileInfo [ k ] = v ;
986
- }
974
+ var isDir = false ;
975
+ var FileSize = 0 ;
976
+ if ( fileParams . Body ) {
977
+ util . getFileSize ( 'putObject' , fileParams , function ( err , size ) {
978
+ FileSize = fileParams . ContentLengt = size ;
987
979
} ) ;
980
+ } else if ( fileParams . FilePath ) {
981
+ var stat ;
982
+ try {
983
+ stat = fs . statSync ( fileParams . FilePath ) ;
984
+ } catch ( e ) { }
985
+ isDir = stat ? stat . isDirectory ( ) : false ;
986
+ FileSize = fileParams . ContentLength = stat ? stat . size : 0 ;
987
+ }
988
+ var fileInfo = { Index : index , TaskId : '' } ;
988
989
989
- // 处理单个文件 TaskReady
990
- var _onTaskReady = fileParams . onTaskReady ;
991
- var onTaskReady = function ( tid ) {
992
- fileInfo . TaskId = tid ;
993
- _onTaskReady && _onTaskReady ( tid ) ;
994
- } ;
995
- fileParams . onTaskReady = onTaskReady ;
996
-
997
- // 处理单个文件进度
998
- var PreAddSize = 0 ;
999
- var _onProgress = fileParams . onProgress ;
1000
- var onProgress = function ( info ) {
1001
- TotalFinish = TotalFinish - PreAddSize + info . loaded ;
1002
- PreAddSize = info . loaded ;
1003
- _onProgress && _onProgress ( info ) ;
1004
- onTotalProgress ( { loaded : TotalFinish , total : TotalSize } ) ;
1005
- } ;
1006
- fileParams . onProgress = onProgress ;
1007
-
1008
- // 处理单个文件完成
1009
- var _onFileFinish = fileParams . onFileFinish ;
1010
- var onFileFinish = function ( err , data ) {
1011
- _onFileFinish && _onFileFinish ( err , data ) ;
1012
- onTotalFileFinish && onTotalFileFinish ( err , data , fileInfo ) ;
1013
- } ;
990
+ // 更新文件总大小
991
+ TotalSize += FileSize ;
1014
992
1015
- // 添加上传任务
1016
- var api = FileSize <= SliceSize || isDir ? 'putObject' : 'sliceUploadFile' ;
1017
- if ( api === 'putObject' ) {
1018
- fileParams . Body = isDir ? '' : fs . createReadStream ( fileParams . FilePath ) ;
1019
- fileParams . Body . isSdkCreated = true ;
993
+ // 整理 option,用于返回给回调
994
+ util . each ( fileParams , function ( v , k ) {
995
+ if ( typeof v !== 'object' && typeof v !== 'function' ) {
996
+ fileInfo [ k ] = v ;
1020
997
}
1021
- taskList . push ( {
1022
- api : api ,
1023
- params : fileParams ,
1024
- callback : onFileFinish ,
1025
- } ) ;
1026
- -- count === 0 && self . _addTasks ( taskList ) ;
1027
998
} ) ;
999
+
1000
+ // 处理单个文件 TaskReady
1001
+ var _onTaskReady = fileParams . onTaskReady ;
1002
+ var onTaskReady = function ( tid ) {
1003
+ fileInfo . TaskId = tid ;
1004
+ _onTaskReady && _onTaskReady ( tid ) ;
1005
+ } ;
1006
+ fileParams . onTaskReady = onTaskReady ;
1007
+
1008
+ // 处理单个文件进度
1009
+ var PreAddSize = 0 ;
1010
+ var _onProgress = fileParams . onProgress ;
1011
+ var onProgress = function ( info ) {
1012
+ TotalFinish = TotalFinish - PreAddSize + info . loaded ;
1013
+ PreAddSize = info . loaded ;
1014
+ _onProgress && _onProgress ( info ) ;
1015
+ onTotalProgress ( { loaded : TotalFinish , total : TotalSize } ) ;
1016
+ } ;
1017
+ fileParams . onProgress = onProgress ;
1018
+
1019
+ // 处理单个文件完成
1020
+ var _onFileFinish = fileParams . onFileFinish ;
1021
+ var onFileFinish = function ( err , data ) {
1022
+ _onFileFinish && _onFileFinish ( err , data ) ;
1023
+ onTotalFileFinish && onTotalFileFinish ( err , data , fileInfo ) ;
1024
+ } ;
1025
+
1026
+ // 添加上传任务,传入 Body 则只支持简单上传
1027
+ var api = FileSize <= SliceSize || isDir || fileParams . Body ? 'putObject' : 'sliceUploadFile' ;
1028
+ if ( api === 'putObject' && fileParams . FilePath && ! fileParams . Body ) {
1029
+ fileParams . Body = isDir ? '' : fs . createReadStream ( fileParams . FilePath ) ;
1030
+ fileParams . Body . isSdkCreated = true ;
1031
+ }
1032
+ taskList . push ( {
1033
+ api : api ,
1034
+ params : fileParams ,
1035
+ callback : onFileFinish ,
1036
+ } ) ;
1037
+ -- count === 0 && self . _addTasks ( taskList ) ;
1028
1038
} ) ;
1029
1039
}
1030
1040
0 commit comments