diff --git a/AliyunOSSSDK/OSSClient.m b/AliyunOSSSDK/OSSClient.m index 1bfeab3e..d60b1159 100644 --- a/AliyunOSSSDK/OSSClient.m +++ b/AliyunOSSSDK/OSSClient.m @@ -1758,9 +1758,8 @@ - (OSSTask *)sequentialUpload:(OSSMultipartUploadRequest *)request realPartLength = uploadFileSize - request.partSize * (i - 1); #pragma clang diagnostic pop } - NSData *uploadPartData = [fileHande readDataOfLength:realPartLength]; - @autoreleasepool { + NSData *uploadPartData = [fileHande readDataOfLength:realPartLength]; OSSUploadPartRequest * uploadPart = [OSSUploadPartRequest new]; uploadPart.bucketName = request.bucketName; uploadPart.objectkey = request.objectKey; diff --git a/AliyunOSSSDK/OSSModel.h b/AliyunOSSSDK/OSSModel.h index a6309581..a8ba5da6 100644 --- a/AliyunOSSSDK/OSSModel.h +++ b/AliyunOSSSDK/OSSModel.h @@ -209,6 +209,10 @@ Sets the session Id for background file transmission 是否开启crc校验(当同时设置了此选项和请求中的checkCRC开关时,以请求中的checkCRC开关为准) */ @property (nonatomic, assign) BOOL crc64Verifiable; +/* + ip访问需要添加参数ipWithHeader + */ +@property (nonatomic, copy) NSString * ipWithHeader; @end diff --git a/AliyunOSSSDK/OSSModel.m b/AliyunOSSSDK/OSSModel.m index ca09c0d9..8c415dfe 100644 --- a/AliyunOSSSDK/OSSModel.m +++ b/AliyunOSSSDK/OSSModel.m @@ -461,9 +461,25 @@ - (instancetype)initWithClientConfiguration:(OSSClientConfiguration *)clientConf - (OSSTask *)interceptRequestMessage:(OSSAllRequestNeededMessage *)request { NSString * userAgent = [self getUserAgent:self.clientConfiguration.userAgentMark]; [request.headerParams oss_setObject:userAgent forKey:@"User-Agent"]; + if ([self isIPAddress:request.endpoint]) { + [request.headerParams oss_setObject:self.clientConfiguration.ipWithHeader forKey:@"host"]; + } return [OSSTask taskWithResult:nil]; } - +/** + * 判断字符串是否为IP地址 + * param iPAddress IP地址字符串 + * return BOOL 是返回YES,否返回NO + */ +- (BOOL)isIPAddress:(NSString *)iPAddress{ + NSString *pattern = @"^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5]).(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5]).(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5]).(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])$"; + + return [self isText:[iPAddress componentsSeparatedByString:@"//"][1] pattern:pattern]; +} +- (BOOL)isText:(NSString *)text pattern:(NSString *)pattern{ + NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",pattern]; + return [predicate evaluateWithObject:text]; +} - (NSString *)getUserAgent:(NSString *)customUserAgent { static NSString * userAgent = nil; diff --git a/AliyunOSSSDK/OSSNetworkingRequestDelegate.m b/AliyunOSSSDK/OSSNetworkingRequestDelegate.m index 4bc33079..5a19f09a 100644 --- a/AliyunOSSSDK/OSSNetworkingRequestDelegate.m +++ b/AliyunOSSSDK/OSSNetworkingRequestDelegate.m @@ -94,7 +94,7 @@ - (OSSTask *)buildInternalHttpRequest { temComs.host = dnsResult; } } else if ([ipAdapter isIPv4Address:temComs.host] || [ipAdapter isIPv6Address:temComs.host]) { - temComs.path = [NSString stringWithFormat:@"/%@",self.allNeededMessage.bucketName]; +// temComs.path = [NSString stringWithFormat:@"/%@",self.allNeededMessage.bucketName]; } }