Skip to content

Commit 0e2805d

Browse files
author
karisli
committed
# 5.7.7
修MD5
1 parent 7c61f19 commit 0e2805d

File tree

13 files changed

+56
-36
lines changed

13 files changed

+56
-36
lines changed

CHANGELOG.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1+
# 5.7.7
2+
- 修复本地二次校验依赖md5导致校验失败的问题
3+
14
# 5.7.6
25
- fix上传crash
36

47
# 5.7.5
5-
- 5.7.5:增加crc检验
6-
- 新增background优先级
7-
- 修复iOS14频繁弹出剪贴板的问题
8-
- 支持上传时添加盲水印
9-
- 修复list多版本文件bug
10-
- 增加截屏接口
8+
- 5.7.5:增加crc检验\- 新增background优先级\- 修复iOS14频繁弹出剪贴板的问题\- 支持上传时添加盲水印\- 修复list多版本文件bug\- 增加截屏接口
119

1210
# 5.7.4
1311
一些修复

QCloudCOSXML.podspec

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Pod::Spec.new do |s|
22
s.name = "QCloudCOSXML"
33

4-
s.version = "5.7.6"
4+
s.version = "5.7.7"
55

66
s.summary = "QCloudCOSXML 腾讯云iOS-SDK组件"
77

@@ -17,15 +17,15 @@ s.version = "5.7.6"
1717
s.default_subspec = 'Default'
1818
s.subspec 'Default' do |default|
1919
default.source_files = 'QCloudCOSXML/Classes/**/*','Models/request.model','QCloudCOSXML/Classes/QCloudCOSXML/*'
20-
default.dependency "QCloudCore",'5.7.6'
20+
default.dependency "QCloudCore",'5.7.7'
2121
end
2222
s.subspec 'Slim' do |slim|
2323
slim.source_files = 'QCloudCOSXML/Classes/**/*','Models/request.model','QCloudCOSXML/Classes/QCloudCOSXML/*'
24-
slim.dependency "QCloudCore/WithoutMTA",'5.7.6'
24+
slim.dependency "QCloudCore/WithoutMTA",'5.7.7'
2525
end
2626
s.subspec 'Transfer' do |transfer|
2727
transfer.source_files = 'QCloudCOSXML/Classes/*','QCloudCOSXML/Classes/Transfer/**/*','QCloudCOSXML/Classes/Base/*'
28-
transfer.dependency "QCloudCore/WithoutMTA",'5.7.6'
28+
transfer.dependency "QCloudCore/WithoutMTA",'5.7.7'
2929
end
3030

3131
end

QCloudCOSXML/Classes/QCloudCOSXMLVersion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
#ifndef QCloudCOSXMLModuleVersion_h
77
#define QCloudCOSXMLModuleVersion_h
8-
#define QCloudCOSXMLModuleVersionNumber 507006
8+
#define QCloudCOSXMLModuleVersionNumber 507007
99

1010
//dependency
1111

QCloudCOSXML/Classes/QCloudCOSXMLVersion.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#import "QCloudCOSXMLVersion.h"
2-
NSString * const QCloudCOSXMLModuleVersion = @"5.7.6";
2+
NSString * const QCloudCOSXMLModuleVersion = @"5.7.7";
33
NSString * const QCloudCOSXMLModuleName = @"QCloudCOSXML";
44
@interface QCloudQCloudCOSXMLLoad : NSObject
55
@end

QCloudCOSXML/Classes/Transfer/enum/QCloudCOSStorageClassEnum.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ typedef NS_ENUM(NSInteger, QCloudCOSStorageClass) {
3232

3333
QCloudCOSStorageStandard = 0,
3434
QCloudCOSStorageStandardIA = 1,
35-
QCloudCOSStorageARCHIVE = 2
35+
QCloudCOSStorageARCHIVE = 2,
36+
QCloudCOSStorageMAZ_Standard = 3,
37+
QCloudCOSStorageMAZ_StandardIA = 4
3638
};
3739

3840
FOUNDATION_EXTERN QCloudCOSStorageClass QCloudCOSStorageClassDumpFromString(NSString* key);

QCloudCOSXML/Classes/Transfer/enum/QCloudCOSStorageClassEnum.m

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ QCloudCOSStorageClass QCloudCOSStorageClassDumpFromString(NSString* key) {
1818
return QCloudCOSStorageStandardIA;
1919
}else if([key isEqualToString:@"ARCHIVE"]){
2020
return QCloudCOSStorageARCHIVE;
21+
}else if([key isEqualToString:@"MAZ_STANDARD"]){
22+
return QCloudCOSStorageMAZ_Standard;
23+
}else if([key isEqualToString:@"MAZ_STANDARD_IA"]){
24+
return QCloudCOSStorageMAZ_StandardIA;
2125
}
26+
2227
return 0;
2328
}
2429
NSString* QCloudCOSStorageClassTransferToString(QCloudCOSStorageClass type) {
@@ -35,6 +40,14 @@ QCloudCOSStorageClass QCloudCOSStorageClassDumpFromString(NSString* key) {
3540
{
3641
return @"ARCHIVE";
3742
}
43+
case QCloudCOSStorageMAZ_Standard:
44+
{
45+
return @"MAZ_STANDARD";
46+
}
47+
case QCloudCOSStorageMAZ_StandardIA:
48+
{
49+
return @"MAZ_STANDARD_IA";
50+
}
3851
default:
3952
return nil;
4053
}

QCloudCOSXML/Classes/Transfer/request/QCloudCOSXMLUploadObjectRequest.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,14 @@ RFC 2616 中定义用于指示资源的MIME类型,将作为 Object 元数据
132132
是否在上传完成以后,将 COS 返回的文件MD5与本地文件算出来的md5进行校验。默认开启,如果校验出错,
133133
文件仍然会被上传到 COS, 不过我们会在本地抛出校验失败的error。
134134
*/
135-
@property (nonatomic, assign) BOOL enableMD5Verification;
135+
@property (nonatomic, assign) BOOL enableMD5Verification __attribute__((deprecated("该属性已过期,请用enableVerification替换")));
136+
/**
137+
是否在上传完成以后,将 COS 返回的文件MD5与本地文件算出来的md5进行校验。默认开启,如果校验出错,
138+
文件仍然会被上传到 COS, 不过我们会在本地抛出校验失败的error。
139+
*/
140+
@property (nonatomic, assign) BOOL enableVerification;
136141

137-
/*
142+
/**
138143
在进行HTTP请求的时候,可以通过设置该参数来设置自定义的一些头部信息。
139144
通常情况下,携带特定的额外HTTP头部可以使用某项功能,如果是这类需求,可以通过设置该属性来实现。
140145
*/

QCloudCOSXML/Classes/Transfer/request/QCloudCOSXMLUploadObjectRequest.m

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
#import <QCloudCore/QCloudHTTPRetryHanlder.h>
3232
static NSUInteger kQCloudCOSXMLUploadLengthLimit = 1*1024*1024;
3333
static NSUInteger kQCloudCOSXMLUploadSliceLength = 1*1024*1024;
34-
34+
static NSUInteger kQCloudCOSXMLMD5Length = 32;
35+
static NSUInteger kQCloudCOSXMLSha1Length = 40;
3536
@interface QCloudCOSXMlResumeUploadInfo : NSObject
3637
@property (nonatomic, strong) NSString* localPath;
3738
@property (strong, nonatomic) NSString *object;
@@ -497,25 +498,26 @@ - (void) uploadOffsetBodys:(NSArray<QCloudFileOffsetBody*>*)allParts
497498
[strongSelf cancel];
498499
}
499500
} else{
500-
501-
if(self.enableMD5Verification) {
502-
503-
NSString* MD5FromeETag = [outputObject.eTag substringWithRange:NSMakeRange(1, outputObject.eTag.length-2)];
504-
NSString* localMD5String = [QCloudEncrytFileOffsetMD5(body.fileURL.path, body.offset, body.sliceLength) lowercaseString];
505-
if (![MD5FromeETag isEqualToString:localMD5String]) {
506-
NSMutableString* errorMessageString = [[NSMutableString alloc] init];
507-
[errorMessageString appendFormat:@"DataIntegrityError分片:上传过程中MD5校验与本地不一致,请检查本地文件在上传过程中是否发生了变化,建议调用删除接口将COS上的文件删除并重新上传,本地计算的 MD5 值:%@, 返回的 ETag值:%@",localMD5String,MD5FromeETag];
508-
if ( [outputObject __originHTTPURLResponse__]&& [[outputObject __originHTTPURLResponse__].allHeaderFields valueForKey:@"x-cos-request-id"]!= nil) {
509-
NSString* requestID = [[outputObject __originHTTPURLResponse__].allHeaderFields valueForKey:@"x-cos-request-id"];
510-
[errorMessageString appendFormat:@", Request id:%@",requestID];
501+
if (self.enableMD5Verification || self.enableVerification) {
502+
if(outputObject.eTag.length == (kQCloudCOSXMLMD5Length+2)) {
503+
NSString* MD5FromeETag = [outputObject.eTag substringWithRange:NSMakeRange(1, outputObject.eTag.length-2)];
504+
NSString* localMD5String = [QCloudEncrytFileOffsetMD5(body.fileURL.path, body.offset, body.sliceLength) lowercaseString];
505+
if (![MD5FromeETag isEqualToString:localMD5String]) {
506+
NSMutableString* errorMessageString = [[NSMutableString alloc] init];
507+
[errorMessageString appendFormat:@"DataIntegrityError分片:上传过程中MD5校验与本地不一致,请检查本地文件在上传过程中是否发生了变化,建议调用删除接口将COS上的文件删除并重新上传,本地计算的 MD5 值:%@, 返回的 ETag值:%@",localMD5String,MD5FromeETag];
508+
if ( [outputObject __originHTTPURLResponse__]&& [[outputObject __originHTTPURLResponse__].allHeaderFields valueForKey:@"x-cos-request-id"]!= nil) {
509+
NSString* requestID = [[outputObject __originHTTPURLResponse__].allHeaderFields valueForKey:@"x-cos-request-id"];
510+
[errorMessageString appendFormat:@", Request id:%@",requestID];
511+
}
512+
NSError* error = [NSError qcloud_errorWithCode:QCloudNetworkErrorCodeMD5NotMatch message:errorMessageString];
513+
[weakSelf onError:error];
514+
[weakSelf cancel];
515+
return ;
511516
}
512-
NSError* error = [NSError qcloud_errorWithCode:QCloudNetworkErrorCodeMD5NotMatch message:errorMessageString];
513-
[weakSelf onError:error];
514-
[weakSelf cancel];
515-
return ;
516517
}
517518
}
518519

520+
519521
QCloudMultipartInfo* info = [QCloudMultipartInfo new];
520522
info.eTag = outputObject.eTag;
521523
info.partNumber = [@(body.index+1) stringValue];

QCloudCore.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
Pod::Spec.new do |s|
1010
s.name = "QCloudCore"
1111

12-
s.version = "5.7.6"
12+
s.version = "5.7.7"
1313

1414
s.summary = "QCloudCore--腾讯云iOS-SDK Foundation"
1515

QCloudCore/Classes/Base/QCloudClientBase/Authentation/QCloudAuthentationV5Creator.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
@implementation NSDictionary(HeaderFilter)
2424
- (NSDictionary*)filteHeaders; {
2525
NSMutableDictionary* signedHeaders = [[NSMutableDictionary alloc] init];
26-
__block const NSArray* shouldSignedHeaderList = @[ @"Content-Length", @"Content-MD5"];
26+
__block const NSArray* shouldSignedHeaderList = @[ @"Content-Length", @"Content-MD5",@"Content-Type",@"Content-Disposition",@"Content-Encoding",@"Transfer-Encoding",@"Range",@"Host"];
2727
[self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
2828
//签名的Headers列表:x开头的(x-cos-之类的),content-length,content-MD5
2929
BOOL shouldSigned = NO;

0 commit comments

Comments
 (0)