|
@@ -8,8 +8,9 @@
|
|
|
#import "KSUploadManager.h"
|
|
|
#import <KS3YunSDK.h>
|
|
|
#import "NSDate+Extension.h"
|
|
|
+#import <QCloudCOSXML/QCloudCOSXMLTransfer.h>
|
|
|
|
|
|
-@interface KSUploadManager ()<KingSoftServiceRequestDelegate>
|
|
|
+@interface KSUploadManager ()<KingSoftServiceRequestDelegate,QCloudSignatureProvider>
|
|
|
|
|
|
@property (nonatomic, copy) KSUploadSuccess successCallback;
|
|
|
|
|
@@ -30,6 +31,13 @@
|
|
|
// bucket
|
|
|
@property (nonatomic, strong) NSString *bucketName;
|
|
|
|
|
|
+
|
|
|
+// 腾讯cos bucket name
|
|
|
+@property (nonatomic, strong) NSString *cosBucketName;
|
|
|
+
|
|
|
+
|
|
|
+@property (nonatomic, strong) NSString *cosFileName;
|
|
|
+
|
|
|
@end
|
|
|
|
|
|
@implementation KSUploadManager
|
|
@@ -39,16 +47,32 @@
|
|
|
dispatch_once(&onceToken, ^{
|
|
|
manager = [[KSUploadManager alloc] init];
|
|
|
[manager configCilentBucket];
|
|
|
+ [manager configTXCloud];
|
|
|
});
|
|
|
return manager;
|
|
|
}
|
|
|
|
|
|
+- (void)configTXCloud {
|
|
|
+ QCloudServiceConfiguration *configuration = [QCloudServiceConfiguration new];
|
|
|
+ QCloudCOSXMLEndPoint *endpoint = [[QCloudCOSXMLEndPoint alloc] init];
|
|
|
+ endpoint.regionName = @"ap-nanjing";
|
|
|
+ // 适使用HTTPS
|
|
|
+ endpoint.useHTTPS = YES;
|
|
|
+ configuration.endpoint = endpoint;
|
|
|
+ configuration.signatureProvider = self;
|
|
|
+
|
|
|
+ // 初始化 cos 服务实例
|
|
|
+ [QCloudCOSXMLService registerDefaultCOSXMLWithConfiguration:configuration];
|
|
|
+ [QCloudCOSTransferMangerService registerDefaultCOSTransferMangerWithConfiguration:configuration];
|
|
|
+}
|
|
|
+
|
|
|
// 默认配置
|
|
|
- (void)configCilentBucket {
|
|
|
self.bucketName = @"daya";
|
|
|
self.uploadBucket = @"daya.ks3-cn-beijing.ksyuncs.com";
|
|
|
self.receiveBucket = @"daya.ks3-cn-beijing.ksyuncs.com";
|
|
|
[[KS3Client initialize] setBucketDomain:self.uploadBucket];
|
|
|
+ self.cosBucketName = @"daya-online-1303457149";
|
|
|
}
|
|
|
|
|
|
- (void)configBucketName:(NSString *)bucketName {
|
|
@@ -80,50 +104,19 @@
|
|
|
self.faliureCallback = faliure;
|
|
|
}
|
|
|
NSString *folderString = [self getDayFolder];
|
|
|
- NSString *uploadFileName = [NSString stringWithFormat:@"%@%@_%@%@%@",folderString,[NSDate getCurrentTimestampFor64], UserDefault(UIDKey), fileName,[UIImage typeForImageData:imageData]];
|
|
|
- NSString *keyValue = uploadFileName;
|
|
|
- [KSNetworkingManager getUploadSignRequest:KS_POST fileName:uploadFileName keyName:keyValue bucketName:self.bucketName success:^(NSDictionary * _Nonnull dic) {
|
|
|
- if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
|
|
|
- KS3AccessControlList *acl = [[KS3AccessControlList alloc] init];
|
|
|
- [acl setContronAccess:KingSoftYun_Permission_Public_Read];
|
|
|
-
|
|
|
- KS3PutObjectRequest *putObjRequest = [[KS3PutObjectRequest alloc] initWithName:@"" withAcl:acl grantAcl:nil];
|
|
|
- // token
|
|
|
- [putObjRequest setStrKS3Token:[dic ks_stringValueForKey:@"signature"]];
|
|
|
- putObjRequest.filename = uploadFileName;
|
|
|
- putObjRequest.data = imageData;
|
|
|
- [putObjRequest setCompleteRequest];
|
|
|
-
|
|
|
- KS3PutObjectResponse *response = [[KS3Client initialize] putObject:putObjRequest];
|
|
|
- if (response.httpStatusCode == 200) {
|
|
|
- if (response.error == nil) {
|
|
|
- if (self.successCallback) {
|
|
|
- NSMutableArray *fileUrlArray = [NSMutableArray array];
|
|
|
- [fileUrlArray addObject:[NSString stringWithFormat:@"https://%@/%@",self.receiveBucket,uploadFileName]];
|
|
|
- self.successCallback(fileUrlArray);
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- if (self.faliureCallback) {
|
|
|
- self.faliureCallback(response.error, @"上传文件失败");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- NSLog(@"Set object acl error: %@", response.error.description);
|
|
|
- if (self.faliureCallback) {
|
|
|
- self.faliureCallback(response.error, @"上传文件失败");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- if (self.faliureCallback) {
|
|
|
- self.faliureCallback(nil, MESSAGEKEY);
|
|
|
- }
|
|
|
+ NSString *uploadFileName = [NSString stringWithFormat:@"%@%@%@_%@%@%@",FILE_DOMAIN,folderString,[NSDate getCurrentTimestampFor64], UserDefault(UIDKey), fileName,[UIImage typeForImageData:imageData]];
|
|
|
+
|
|
|
+ [self uploadFileToOssWithSource:uploadFileName fileData:imageData progress:^(int64_t bytesWritten, int64_t totalBytes) {
|
|
|
+
|
|
|
+ } successCallback:^(NSString *fileUrl) {
|
|
|
+ NSMutableArray *fileUrlArray = [NSMutableArray array];
|
|
|
+ [fileUrlArray addObject:fileUrl];
|
|
|
+ if (self.successCallback) {
|
|
|
+ self.successCallback(fileUrlArray);
|
|
|
}
|
|
|
- } faliure:^(NSError * _Nonnull error) {
|
|
|
+ } faliure:^{
|
|
|
if (self.faliureCallback) {
|
|
|
- self.faliureCallback(error, @"获取文件签名失败");
|
|
|
+ self.faliureCallback(nil, @"上传文件失败");
|
|
|
}
|
|
|
}];
|
|
|
}
|
|
@@ -137,92 +130,71 @@
|
|
|
}
|
|
|
|
|
|
NSString *folderString = [self getDayFolder];
|
|
|
-
|
|
|
NSMutableArray *fileNameArray = [NSMutableArray array];
|
|
|
if (fileDataArray.count > 1) {
|
|
|
for (NSInteger i = 0 ; i < fileDataArray.count; i++) {
|
|
|
NSData *fileData = fileDataArray[i];
|
|
|
- NSString *uploadFileName = [NSString stringWithFormat:@"%@%@_%@%@%zd%@",folderString,[NSDate getCurrentTimestampFor64], UserDefault(UIDKey), fileName,i,[UIImage typeForImageData:fileData]];
|
|
|
+ NSString *uploadFileName = [NSString stringWithFormat:@"%@%@%@_%@%@%zd%@",FILE_DOMAIN,folderString,[NSDate getCurrentTimestampFor64], UserDefault(UIDKey), fileName,i,[UIImage typeForImageData:fileData]];
|
|
|
[fileNameArray addObject:uploadFileName];
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
NSData *fileData = fileDataArray[0];
|
|
|
- NSString *uploadFileName = [NSString stringWithFormat:@"%@%@_%@%@%@",folderString,[NSDate getCurrentTimestampFor64], UserDefault(UIDKey), fileName,[UIImage typeForImageData:fileData]];
|
|
|
+ NSString *uploadFileName = [NSString stringWithFormat:@"%@%@%@_%@%@%@",FILE_DOMAIN,folderString,[NSDate getCurrentTimestampFor64], UserDefault(UIDKey), fileName,[UIImage typeForImageData:fileData]];
|
|
|
[fileNameArray addObject:uploadFileName];
|
|
|
}
|
|
|
+ [self MutilUploadFile:fileNameArray fileDataArray:fileDataArray successArray:[NSMutableArray array] failArray:[NSMutableArray array] fileIndex:0];
|
|
|
|
|
|
- __block NSMutableArray *sessions = [NSMutableArray array];
|
|
|
- __block NSMutableArray *responses = [NSMutableArray array];
|
|
|
- __block NSMutableArray *failResponse = [NSMutableArray array];
|
|
|
-
|
|
|
- dispatch_group_t uploadGroup = dispatch_group_create();
|
|
|
- NSInteger count = fileDataArray.count;
|
|
|
- for (int i = 0; i < count; i++) {
|
|
|
-
|
|
|
- dispatch_group_enter(uploadGroup);
|
|
|
- NSString *uploadFileName = fileNameArray[i];
|
|
|
- NSString *keyName = fileNameArray[i];
|
|
|
- NSData *fileData = fileDataArray[i];
|
|
|
- [KSNetworkingManager getUploadSignRequest:KS_POST fileName:uploadFileName keyName:keyName bucketName:self.bucketName success:^(NSDictionary * _Nonnull dic) {
|
|
|
- if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
|
|
|
- KS3AccessControlList *acl = [[KS3AccessControlList alloc] init];
|
|
|
- [acl setContronAccess:KingSoftYun_Permission_Public_Read];
|
|
|
-
|
|
|
- KS3PutObjectRequest *putObjRequest = [[KS3PutObjectRequest alloc] initWithName:@"" withAcl:acl grantAcl:nil];
|
|
|
- if (putObjRequest) {
|
|
|
- [sessions addObject:putObjRequest];
|
|
|
- }
|
|
|
- // token
|
|
|
- [putObjRequest setStrKS3Token:[dic ks_stringValueForKey:@"signature"]];
|
|
|
- putObjRequest.filename = uploadFileName;
|
|
|
- putObjRequest.data = fileData;
|
|
|
- [putObjRequest setCompleteRequest];
|
|
|
- KS3PutObjectResponse *response = [[KS3Client initialize] putObject:putObjRequest];
|
|
|
- if (response.httpStatusCode == 200) {
|
|
|
- if (response.error == nil) {
|
|
|
- [responses addObject:[NSString stringWithFormat:@"https://%@/%@",self.receiveBucket,uploadFileName]];
|
|
|
- }
|
|
|
- else {
|
|
|
- NSString *desc = [NSString stringWithFormat:@"第%d次上传文件失败",i];
|
|
|
- [failResponse addObject:desc];
|
|
|
- }
|
|
|
- [sessions removeObject:putObjRequest];
|
|
|
- }
|
|
|
- else {
|
|
|
- NSLog(@"Set object acl error: %@", response.error.description);
|
|
|
- NSString *desc = [NSString stringWithFormat:@"第%d次上传文件失败",i];
|
|
|
- [failResponse addObject:desc];
|
|
|
- [sessions removeObject:putObjRequest];
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- [failResponse addObject:MESSAGEKEY];
|
|
|
- }
|
|
|
- dispatch_group_leave(uploadGroup);
|
|
|
- } faliure:^(NSError * _Nonnull error) {
|
|
|
- NSError *Error = [NSError errorWithDomain:@"getUploadSign" code:-999 userInfo:@{NSLocalizedDescriptionKey:[NSString stringWithFormat:@"第%d次获取签名失败",i]}];
|
|
|
- [failResponse addObject:Error];
|
|
|
- dispatch_group_leave(uploadGroup);
|
|
|
- }];
|
|
|
+}
|
|
|
+
|
|
|
+- (void)MutilUploadFile:(NSMutableArray *)fileNameArray fileDataArray:(NSMutableArray *)fileDataArray successArray:(NSMutableArray *)successArray failArray:(NSMutableArray *)failArray fileIndex:(NSInteger)fileIndex {
|
|
|
+ if (fileIndex >= fileNameArray.count) {
|
|
|
+ return;
|
|
|
}
|
|
|
-
|
|
|
- dispatch_group_notify(uploadGroup, dispatch_get_main_queue(), ^{
|
|
|
- if (responses.count > 0) {
|
|
|
- if (self.successCallback) {
|
|
|
- self.successCallback([responses copy]);
|
|
|
- }
|
|
|
+ NSString *uploadFileName = fileNameArray[fileIndex];
|
|
|
+ NSData *fileData = fileDataArray[fileIndex];
|
|
|
+ [self uploadFileToOssWithSource:uploadFileName fileData:fileData progress:^(int64_t bytesWritten, int64_t totalBytes) {
|
|
|
+
|
|
|
+ } successCallback:^(NSString *fileUrl) {
|
|
|
+
|
|
|
+ NSMutableArray *success = [NSMutableArray arrayWithArray:successArray];
|
|
|
+ [success addObject:fileUrl];
|
|
|
+ if (fileIndex == fileNameArray.count - 1) {
|
|
|
+ [self finishMutilUpload:success failArray:failArray];
|
|
|
}
|
|
|
- if (failResponse.count > 0) {
|
|
|
- if (self.faliureCallback) {
|
|
|
- self.faliureCallback(nil,@"上传文件失败");
|
|
|
- }
|
|
|
+ else {
|
|
|
+ [self MutilUploadFile:fileNameArray fileDataArray:fileDataArray successArray:success failArray:failArray fileIndex:fileIndex+1];
|
|
|
}
|
|
|
|
|
|
- });
|
|
|
-
|
|
|
+ } faliure:^{
|
|
|
+
|
|
|
+ NSString *desc = [NSString stringWithFormat:@"第%zd次上传文件失败",fileIndex];
|
|
|
+ NSMutableArray *failerArray = [NSMutableArray arrayWithArray:failArray];
|
|
|
+ [failerArray addObject:desc];
|
|
|
+
|
|
|
+ if (fileIndex == fileNameArray.count - 1) {
|
|
|
+ [self finishMutilUpload:successArray failArray:failArray];
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ [self MutilUploadFile:fileNameArray fileDataArray:fileDataArray successArray:successArray failArray:failerArray fileIndex:fileIndex+1];
|
|
|
+ }
|
|
|
+ }];
|
|
|
}
|
|
|
|
|
|
+- (void)finishMutilUpload:(NSMutableArray *)successArray failArray:(NSMutableArray *)array {
|
|
|
+ if (successArray.count > 0) {
|
|
|
+ if (self.successCallback) {
|
|
|
+ self.successCallback([successArray copy]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (self.faliureCallback) {
|
|
|
+ self.faliureCallback(nil,@"上传文件失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
- (void)videoUpload:(NSData *)fileData fileName:(NSString *)fileName fileSuffix:(NSString *)fileSuffix progress:(KSUploadProgress)uploadProgress successCallback:(KSUploadSuccess)success faliure:(KSUploadFailer)faliure {
|
|
|
if (success) {
|
|
|
self.successCallback = success;
|
|
@@ -234,43 +206,21 @@
|
|
|
self.uploadProgress = uploadProgress;
|
|
|
}
|
|
|
NSString *folderString = [self getDayFolder];
|
|
|
-
|
|
|
- NSString *uploadFileName = [NSString stringWithFormat:@"%@%@_%@%@%@",folderString,[NSDate getCurrentTimestampFor64], UserDefault(UIDKey),fileName,fileSuffix];
|
|
|
- NSString *keyValue = uploadFileName;
|
|
|
- self.videoLinkUrl = [NSString stringWithFormat:@"https://%@/%@",self.receiveBucket,uploadFileName];
|
|
|
- [KSNetworkingManager getUploadSignRequest:KS_POST fileName:uploadFileName keyName:keyValue bucketName:self.bucketName success:^(NSDictionary * _Nonnull dic) {
|
|
|
- if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
|
|
|
- KS3AccessControlList *acl = [[KS3AccessControlList alloc] init];
|
|
|
- [acl setContronAccess:KingSoftYun_Permission_Public_Read];
|
|
|
-
|
|
|
- KS3PutObjectRequest *putObjRequest = [[KS3PutObjectRequest alloc] initWithName:@"" withAcl:acl grantAcl:nil];
|
|
|
- // token
|
|
|
- [putObjRequest setStrKS3Token:[dic ks_stringValueForKey:@"signature"]];
|
|
|
- putObjRequest.filename = uploadFileName;
|
|
|
- putObjRequest.data = fileData;
|
|
|
- self->_fileSize = putObjRequest.data.length;
|
|
|
- putObjRequest.delegate = self;
|
|
|
- [putObjRequest setCompleteRequest];
|
|
|
- self.videoLinkUrl = [NSString stringWithFormat:@"https://%@/%@",self.receiveBucket,uploadFileName];
|
|
|
- KS3PutObjectResponse *response = [[KS3Client initialize] putObject:putObjRequest];
|
|
|
- if (putObjRequest.delegate == nil) {
|
|
|
- NSLog(@"%@",[[NSString alloc] initWithData:response.body encoding:NSUTF8StringEncoding]);
|
|
|
- if (response.httpStatusCode == 200) {
|
|
|
- NSLog(@"Put object success");
|
|
|
- }
|
|
|
- else {
|
|
|
- NSLog(@"Put object failed");
|
|
|
- }
|
|
|
- }
|
|
|
+ NSString *uploadFileName = [NSString stringWithFormat:@"%@%@%@_%@%@%@",FILE_DOMAIN,folderString,[NSDate getCurrentTimestampFor64], UserDefault(UIDKey),fileName,fileSuffix];
|
|
|
+
|
|
|
+ [self uploadFileToOssWithSource:uploadFileName fileData:fileData progress:^(int64_t bytesWritten, int64_t totalBytes) {
|
|
|
+ if (self.uploadProgress) {
|
|
|
+ self.uploadProgress(bytesWritten, totalBytes);
|
|
|
}
|
|
|
- else {
|
|
|
- if (self.faliureCallback) {
|
|
|
- self.faliureCallback(nil, MESSAGEKEY);
|
|
|
- }
|
|
|
+ } successCallback:^(NSString *fileUrl) {
|
|
|
+ NSMutableArray *fileUrlArray = [NSMutableArray array];
|
|
|
+ [fileUrlArray addObject:fileUrl];
|
|
|
+ if (self.successCallback) {
|
|
|
+ self.successCallback(fileUrlArray);
|
|
|
}
|
|
|
- } faliure:^(NSError * _Nonnull error) {
|
|
|
+ } faliure:^{
|
|
|
if (self.faliureCallback) {
|
|
|
- self.faliureCallback(error, @"获取文件签名失败");
|
|
|
+ self.faliureCallback(nil, @"上传文件失败");
|
|
|
}
|
|
|
}];
|
|
|
}
|
|
@@ -283,51 +233,21 @@
|
|
|
self.faliureCallback = faliure;
|
|
|
}
|
|
|
NSString *folderString = [self getDayFolder];
|
|
|
+ NSString *uploadFileName = [NSString stringWithFormat:@"%@%@%@_%@%@%@",FILE_DOMAIN,folderString,[NSDate getCurrentTimestampFor64],UserDefault(UIDKey), fileName,fileSuffix];
|
|
|
|
|
|
- NSString *uploadFileName = [NSString stringWithFormat:@"%@%@_%@%@%@",folderString,[NSDate getCurrentTimestampFor64],UserDefault(UIDKey), fileName,fileSuffix];
|
|
|
- NSString *keyValue = uploadFileName;
|
|
|
- [KSNetworkingManager getUploadSignRequest:KS_POST fileName:uploadFileName keyName:keyValue bucketName:self.bucketName success:^(NSDictionary * _Nonnull dic) {
|
|
|
- if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
|
|
|
- KS3AccessControlList *acl = [[KS3AccessControlList alloc] init];
|
|
|
- [acl setContronAccess:KingSoftYun_Permission_Public_Read];
|
|
|
-
|
|
|
- KS3PutObjectRequest *putObjRequest = [[KS3PutObjectRequest alloc] initWithName:@"" withAcl:acl grantAcl:nil];
|
|
|
- // token
|
|
|
- [putObjRequest setStrKS3Token:[dic ks_stringValueForKey:@"signature"]];
|
|
|
- putObjRequest.filename = uploadFileName;
|
|
|
- putObjRequest.data = fileData;
|
|
|
- [putObjRequest setCompleteRequest];
|
|
|
-
|
|
|
- KS3PutObjectResponse *response = [[KS3Client initialize] putObject:putObjRequest];
|
|
|
- if (response.httpStatusCode == 200) {
|
|
|
- if (response.error == nil) {
|
|
|
- if (self.successCallback) {
|
|
|
- NSMutableArray *fileUrlArray = [NSMutableArray array];
|
|
|
- [fileUrlArray addObject:[NSString stringWithFormat:@"https://%@/%@",self.receiveBucket,uploadFileName]];
|
|
|
- self.successCallback(fileUrlArray);
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- if (self.faliureCallback) {
|
|
|
- self.faliureCallback(response.error, @"上传文件失败");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- NSLog(@"Set object acl error: %@", response.error.description);
|
|
|
- if (self.faliureCallback) {
|
|
|
- self.faliureCallback(response.error, @"上传文件失败");
|
|
|
- }
|
|
|
- }
|
|
|
+ [self uploadFileToOssWithSource:uploadFileName fileData:fileData progress:^(int64_t bytesWritten, int64_t totalBytes) {
|
|
|
+ if (self.uploadProgress) {
|
|
|
+ self.uploadProgress(bytesWritten, totalBytes);
|
|
|
}
|
|
|
- else {
|
|
|
- if (self.faliureCallback) {
|
|
|
- self.faliureCallback(nil, MESSAGEKEY);
|
|
|
- }
|
|
|
+ } successCallback:^(NSString *fileUrl) {
|
|
|
+ NSMutableArray *fileUrlArray = [NSMutableArray array];
|
|
|
+ [fileUrlArray addObject:fileUrl];
|
|
|
+ if (self.successCallback) {
|
|
|
+ self.successCallback(fileUrlArray);
|
|
|
}
|
|
|
- } faliure:^(NSError * _Nonnull error) {
|
|
|
+ } faliure:^{
|
|
|
if (self.faliureCallback) {
|
|
|
- self.faliureCallback(error, @"获取文件签名失败");
|
|
|
+ self.faliureCallback(nil, @"上传文件失败");
|
|
|
}
|
|
|
}];
|
|
|
}
|
|
@@ -366,4 +286,70 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+- (void)uploadFileToOssWithSource:(NSString *)fileName fileData:(NSData *)fileData progress:(KSUploadProgress)uploadProgress successCallback:(void(^)(NSString *fileUrl))success faliure:(void(^)(void))faliure {
|
|
|
+ self.cosFileName = fileName;
|
|
|
+ QCloudCOSXMLUploadObjectRequest *put = [QCloudCOSXMLUploadObjectRequest new];
|
|
|
+ put.bucket = self.cosBucketName;
|
|
|
+ put.object = fileName;
|
|
|
+ put.body = fileData;
|
|
|
+
|
|
|
+ [put setSendProcessBlock:^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) {
|
|
|
+ // 进度
|
|
|
+ dispatch_main_async_safe(^{
|
|
|
+ if (uploadProgress) {
|
|
|
+ uploadProgress(totalBytesSent, totalBytesExpectedToSend);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }];
|
|
|
+ // 监听上传结果
|
|
|
+ [put setFinishBlock:^(QCloudUploadObjectResult * _Nullable result, NSError * _Nullable error) {
|
|
|
+ if (result) {
|
|
|
+ NSString * fileUrl = result.location;
|
|
|
+ if (success) {
|
|
|
+ dispatch_main_async_safe(^{
|
|
|
+ success(fileUrl);
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (faliure) {
|
|
|
+ dispatch_main_async_safe(^{
|
|
|
+ faliure();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }];
|
|
|
+
|
|
|
+ [[QCloudCOSTransferMangerService defaultCOSTransferManager] UploadObject:put];
|
|
|
+}
|
|
|
+
|
|
|
+- (void)signatureWithFields:(QCloudSignatureFields *)fileds request:(QCloudBizHTTPRequest *)request urlRequest:(NSMutableURLRequest *)urlRequst compelete:(QCloudHTTPAuthentationContinueBlock)continueBlock {
|
|
|
+ [KSNetworkingManager getTXCosUploadSignRequest:KS_POST fileName:self.cosFileName keyName:self.cosFileName bucketName:self.cosBucketName success:^(NSDictionary * _Nonnull dic) {
|
|
|
+ if ([dic ks_integerValueForKey:@"code"] == 200) {
|
|
|
+ NSString *signatureString = [[dic ks_dictionaryValueForKey:@"data"] ks_stringValueForKey:@"signature"];
|
|
|
+// NSString *
|
|
|
+// QCloudCredential* credential = [QCloudCredential new];
|
|
|
+// credential.secretID = @"AKIDSo12YszsjQwKdkbFjBThokdO6HI7lFbq";
|
|
|
+// credential.secretKey = @"5ykLhplZDhLo7E7rQnDSWQ9eyAAyhP0T";
|
|
|
+// QCloudAuthentationV5Creator* creator = [[QCloudAuthentationV5Creator alloc]
|
|
|
+// initWithCredential:credential];
|
|
|
+ // 注意 这里不要对urlRequst 进行copy以及mutableCopy操作
|
|
|
+
|
|
|
+// NSTimeInterval endTime = [[[dic ks_dictionaryValueForKey:@"data"] ks_stringValueForKey:@"expiration"] longLongValue];
|
|
|
+// NSDate *expiration = [NSDate dateWithTimeIntervalSince1970:endTime/1000.0];
|
|
|
+ QCloudSignature *signature = [[QCloudSignature alloc] initWithSignature:signatureString expiration:nil];
|
|
|
+// QCloudSignature *signature = [creator signatureForData:urlRequst];
|
|
|
+ continueBlock(signature, nil);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ continueBlock(nil, nil);
|
|
|
+ }
|
|
|
+ } faliure:^(NSError * _Nonnull error) {
|
|
|
+ continueBlock(nil, nil);
|
|
|
+ if (self.faliureCallback) {
|
|
|
+ self.faliureCallback(error, @"获取文件签名失败");
|
|
|
+ }
|
|
|
+ }];
|
|
|
+}
|
|
|
@end
|