@@ -971,60 +971,70 @@ function uploadFiles(params, callback) {
971971 var taskList = [ ] ;
972972 var count = params . files . length ;
973973 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 ;
987979 } ) ;
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 : '' } ;
988989
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 ;
1014992
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 ;
1020997 }
1021- taskList . push ( {
1022- api : api ,
1023- params : fileParams ,
1024- callback : onFileFinish ,
1025- } ) ;
1026- -- count === 0 && self . _addTasks ( taskList ) ;
1027998 } ) ;
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 ) ;
10281038 } ) ;
10291039}
10301040
0 commit comments