diff --git a/QiniuSDK/Storage/QNFormUpload.m b/QiniuSDK/Storage/QNFormUpload.m index 173b9356..bd81ab80 100644 --- a/QiniuSDK/Storage/QNFormUpload.m +++ b/QiniuSDK/Storage/QNFormUpload.m @@ -26,6 +26,7 @@ @interface QNFormUpload () @property (nonatomic, strong) QNUploadOption *option; @property (nonatomic, strong) QNUpCompletionHandler complete; @property (nonatomic, strong) QNConfiguration *config; +@property (nonatomic) float previousPercent; @end @@ -46,6 +47,7 @@ - (instancetype)initWithData:(NSData *)data _complete = block; _httpManager = http; _config = config; + _previousPercent = 0; } return self; } @@ -72,6 +74,11 @@ - (void)put { if (percent > 0.95) { percent = 0.95; } + if (percent > _previousPercent) { + _previousPercent = percent; + } else { + percent = _previousPercent; + } _option.progressHandler(_key, percent); }; diff --git a/QiniuSDK/Storage/QNResumeUpload.m b/QiniuSDK/Storage/QNResumeUpload.m index 110b5871..47d408ef 100644 --- a/QiniuSDK/Storage/QNResumeUpload.m +++ b/QiniuSDK/Storage/QNResumeUpload.m @@ -42,6 +42,8 @@ @interface QNResumeUpload () @property (nonatomic, strong) NSArray *fileAry; +@property (nonatomic) float previousPercent; + - (void)makeBlock:(NSString *)uphost offset:(UInt32)offset blockSize:(UInt32)blockSize @@ -89,6 +91,7 @@ - (instancetype)initWithFile:(id)file _config = config; _token = token; + _previousPercent = 0; } return self; } @@ -197,6 +200,11 @@ - (void)nextTask:(UInt32)offset retriedTimes:(int)retried host:(NSString *)host if (percent > 0.95) { percent = 0.95; } + if (percent > _previousPercent) { + _previousPercent = percent; + } else { + percent = _previousPercent; + } self.option.progressHandler(self.key, percent); };