@@ -169,26 +169,32 @@ function getUploadIdAndPartList(params, callback) {
169169 }
170170 } ;
171171 var getChunkETag = function ( PartNumber , callback ) {
172- if ( ETagMap [ PartNumber ] ) {
173- return ETagMap [ PartNumber ] ;
174- }
175172 var start = SliceSize * ( PartNumber - 1 ) ;
176173 var end = Math . min ( start + SliceSize , FileSize ) ;
177174 var ChunkSize = end - start ;
178- var ChunkReadStream = fs . createReadStream ( params . FilePath , { start : start , end : end - 1 } ) ;
179- util . getFileMd5 ( ChunkReadStream , function ( err , md5 ) {
180- if ( err ) return callback ( err ) ;
181- var ETag = '"' + md5 + '"' ;
182- ETagMap [ PartNumber ] = ETag ;
183- FinishSliceCount += 1 ;
184- FinishSize += ChunkSize ;
185- callback ( err , {
175+
176+ if ( ETagMap [ PartNumber ] ) {
177+ callback ( null , {
186178 PartNumber : PartNumber ,
187- ETag : ETag ,
179+ ETag : ETagMap [ PartNumber ] ,
188180 Size : ChunkSize
189181 } ) ;
190- onHashProgress ( ) ;
191- } ) ;
182+ } else {
183+ var ChunkReadStream = fs . createReadStream ( params . FilePath , { start : start , end : end - 1 } ) ;
184+ util . getFileMd5 ( ChunkReadStream , function ( err , md5 ) {
185+ if ( err ) return callback ( err ) ;
186+ var ETag = '"' + md5 + '"' ;
187+ ETagMap [ PartNumber ] = ETag ;
188+ FinishSliceCount += 1 ;
189+ FinishSize += ChunkSize ;
190+ callback ( err , {
191+ PartNumber : PartNumber ,
192+ ETag : ETag ,
193+ Size : ChunkSize
194+ } ) ;
195+ onHashProgress ( ) ;
196+ } ) ;
197+ }
192198 } ;
193199
194200 // 通过和文件的 md5 对比,判断 UploadId 是否可用
@@ -497,12 +503,12 @@ function uploadSliceList(params, cb) {
497503 FinishSize += currentSize - preAddSize ;
498504 SliceItem . ETag = data . ETag ;
499505 }
500- onFileProgress ( true ) ;
501506 asyncCallback ( err || null , data ) ;
502507 } ) ;
503508
504509 } , function ( err , datas ) {
505510 if ( ! self . _isRunningTask ( TaskId ) ) return ;
511+ onFileProgress ( true ) ;
506512 if ( err ) {
507513 return cb ( err ) ;
508514 }
0 commit comments