@@ -328,18 +328,22 @@ func batchUploadFlow(info BatchUpload2Info, uploadConfig UploadConfig, dbPath st
328
328
}
329
329
330
330
// 本地文件和服务端文件均没有变化,则不需要重新上传
331
- stat , sErr := object .Status (object.StatusApiInfo {
332
- Bucket : uploadInfo .ToBucket ,
333
- Key : uploadInfo .SaveKey ,
334
- NeedPart : false ,
335
- })
336
- if sErr != nil {
337
- return true , data .NewEmptyError ().AppendDesc ("get stat from server" ).AppendError (sErr )
331
+ isServerFileNotChange := true
332
+ if uploadConfig .CheckHash {
333
+ // 检测 hash 需要调用 Stat 接口查询 hash,如果用户不检测 hash 则认为服务端文件没有变化。
334
+ stat , sErr := object .Status (object.StatusApiInfo {
335
+ Bucket : uploadInfo .ToBucket ,
336
+ Key : uploadInfo .SaveKey ,
337
+ NeedPart : false ,
338
+ })
339
+ if sErr != nil {
340
+ return true , data .NewEmptyError ().AppendDesc ("get stat from server" ).AppendError (sErr )
341
+ }
342
+ isServerFileNotChange = stat .Hash == result .ServerFileHash
338
343
}
339
344
340
345
// LocalFileModifyTime 单位是 100ns
341
- isLocalFileNotChange , mErr := utils .IsFileMatchFileModifyTime (uploadInfo .FilePath , recordUploadInfo .LocalFileModifyTime / 10000000 )
342
- isServerFileNotChange := stat .PutTime == result .ServerPutTime
346
+ isLocalFileNotChange , mErr := utils .IsLocalFileMatchFileModifyTime (uploadInfo .FilePath , recordUploadInfo .LocalFileModifyTime / 10000000 )
343
347
// 本地文件没有变化,服务端文件没有变化,则不需要再重新上传
344
348
if isLocalFileNotChange && isServerFileNotChange {
345
349
return false , nil
@@ -348,7 +352,7 @@ func batchUploadFlow(info BatchUpload2Info, uploadConfig UploadConfig, dbPath st
348
352
return true , data .NewEmptyError ().AppendDescF ("local file has change, %v" , mErr )
349
353
} else {
350
354
// 服务端文件有变动,尝试检查 hash,hash 统一由单文件上传之前检查
351
- return true , data .NewEmptyError ().AppendDescF ("server file has change, PutTime don't match, except:%d but:%d" , result . ServerPutTime , stat . PutTime )
355
+ return true , data .NewEmptyError ().AppendDesc ("server file has change, hash don't match" )
352
356
}
353
357
}).
354
358
FlowWillStartFunc (func (flow * flow.Flow ) (err * data.CodeError ) {
0 commit comments