Example/AliyunOSSSDK-iOS-Example/Classes/Wrapper/OSSWrapper.m (146 lines of code) (raw):

// // OSSWrapper.m // AliyunOSSSDK-iOS-Example // // Created by huaixu on 2018/10/23. // Copyright © 2018 aliyun. All rights reserved. // #import <Foundation/Foundation.h> #import "OSSWrapper.h" #import "OSSManager.h" #import "OSSTestMacros.h" @interface OSSWrapper () @property (nonatomic, strong) OSSPutObjectRequest *normalUploadRequest; @property (nonatomic, strong) OSSGetObjectRequest *normalDloadRequest; @end // 字体,默认文泉驿正黑 NSString * const font = @"d3F5LXplbmhlaQ=="; @implementation OSSWrapper - (void)asyncGetImage:(NSString *)objectKey success:(void (^)(id _Nullable))success failure:(void (^)(NSError * _Nonnull))failure { if (![objectKey oss_isNotEmpty]) { NSError *error = [NSError errorWithDomain:NSInvalidArgumentException code:0 userInfo:@{NSLocalizedDescriptionKey: @"objectKey should not be nil"}]; failure(error); return; } NSString *downloadFilePath = [[NSString oss_documentDirectory] stringByAppendingPathComponent:objectKey]; _normalDloadRequest = [OSSGetObjectRequest new]; _normalDloadRequest.bucketName = OSS_BUCKET_PRIVATE; _normalDloadRequest.objectKey = objectKey; _normalDloadRequest.downloadToFileURL = [NSURL URLWithString:downloadFilePath]; _normalDloadRequest.downloadProgress = ^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) { float progress = 1.f * totalBytesWritten / totalBytesExpectedToWrite; OSSLogDebug(@"下载文件进度: %f", progress); }; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ OSSTask * task = [[OSSManager sharedManager].imageClient getObject:_normalDloadRequest]; [task continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) { dispatch_async(dispatch_get_main_queue(), ^{ if (task.error) { failure(task.error); } else { success(downloadFilePath); } }); return nil; }]; }); } - (void)asyncPutImage:(NSString *)objectKey localFilePath:(NSString *)filePath success:(void (^)(id _Nullable))success failure:(void (^)(NSError * _Nonnull))failure { if (![objectKey oss_isNotEmpty]) { NSError *error = [NSError errorWithDomain:NSInvalidArgumentException code:0 userInfo:@{NSLocalizedDescriptionKey: @"objectKey should not be nil"}]; failure(error); return; } _normalUploadRequest = [OSSPutObjectRequest new]; _normalUploadRequest.bucketName = OSS_BUCKET_PRIVATE; _normalUploadRequest.objectKey = objectKey; _normalUploadRequest.uploadingFileURL = [NSURL fileURLWithPath:filePath]; _normalUploadRequest.isAuthenticationRequired = YES; _normalUploadRequest.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) { float progress = 1.f * totalByteSent / totalBytesExpectedToSend; OSSLogDebug(@"上传文件进度: %f", progress); }; _normalUploadRequest.callbackParam = @{ @"callbackUrl": OSS_CALLBACK_URL, // callbackBody可自定义传入的信息 @"callbackBody": @"filename=${object}" }; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ OSSTask * task = [[OSSManager sharedManager].defaultClient putObject:_normalUploadRequest]; [task continueWithBlock:^id(OSSTask *task) { dispatch_async(dispatch_get_main_queue(), ^{ if (task.error) { failure(task.error); } else { success(nil); } }); return nil; }]; }); } - (void)normalRequestCancel { if (_normalDloadRequest) { [_normalDloadRequest cancel]; } if (_normalUploadRequest) { [_normalUploadRequest cancel]; } } - (void)triggerCallbackWithObjectKey:(NSString *)objectKey success:(void (^)(id _Nonnull))success failure:(void (^)(NSError * _Nonnull))failure { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ OSSCallBackRequest *request = [OSSCallBackRequest new]; request.bucketName = OSS_BUCKET_PRIVATE; request.objectName = objectKey; request.callbackParam = @{@"callbackUrl": OSS_CALLBACK_URL, @"callbackBody": @"test"}; request.callbackVar = @{@"var1": @"value1", @"var2": @"value2"}; OSSTask *triggerCBTask = [[OSSManager sharedManager].defaultClient triggerCallBack:request]; [triggerCBTask waitUntilFinished]; dispatch_async(dispatch_get_main_queue(), ^{ if (triggerCBTask.result) { success(triggerCBTask.result); } else { failure(triggerCBTask.error); } }); }); } - (void)multipartUploadWithSuccess:(void (^)(id _Nonnull))success failure:(void (^)(NSError * _Nonnull))failure { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 获取沙盒的cache路径 NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]; // 获取本地大文件url NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"wangwang" withExtension:@"zip"]; OSSResumableUploadRequest * resumableUpload = [OSSResumableUploadRequest new]; resumableUpload.bucketName = OSS_BUCKET_PRIVATE; // 设置bucket名称 resumableUpload.objectKey = @"oss-ios-demo-big-file"; // 设置object key resumableUpload.uploadingFileURL = fileURL; // 设置要上传的文件url resumableUpload.contentType = @"application/octet-stream"; // 设置content-type resumableUpload.partSize = 102400; // 设置分片大小 resumableUpload.recordDirectoryPath = cachesDir; // 设置分片信息的本地存储路径 // 设置metadata resumableUpload.completeMetaHeader = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"value1", @"x-oss-meta-name1", nil]; // 设置上传进度回调 resumableUpload.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) { NSLog(@"progress: %lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend); }; // OSSTask * resumeTask = [[OSSManager sharedManager].defaultClient resumableUpload:resumableUpload]; [resumeTask waitUntilFinished]; // 阻塞当前线程直到上传任务完成 dispatch_async(dispatch_get_main_queue(), ^{ if (resumeTask.result) { success(resumeTask.result); } else { failure(resumeTask.error); } }); }); } - (void)textWaterMark:(NSString *)object waterText:(NSString *)text objectSize:(int)size success:(void (^)(id _Nonnull))success failure:(void (^)(NSError * _Nonnull))failure { NSString * base64Text = [OSSUtil calBase64WithData:(UTF8Char*)[text cStringUsingEncoding:NSASCIIStringEncoding]]; NSString * queryString = [NSString stringWithFormat:@"@watermark=2&type=%@&text=%@&size=%d", font, base64Text, size]; NSLog(@"TextWatermark: %@", object); NSLog(@"Text: %@", text); NSLog(@"QueryString: %@", queryString); NSLog(@"%@%@", object, queryString); [self asyncGetImage:[NSString stringWithFormat:@"%@%@", object, queryString] success:success failure:failure]; } - (void)reSize:(NSString *)object picWidth:(int)width picHeight:(int)height success:(void (^)(id _Nonnull))success failure:(void (^)(NSError * _Nonnull))failure { NSString * queryString = [NSString stringWithFormat:@"@%dw_%dh_1e_1c", width, height]; NSLog(@"ResizeImage: %@", object); NSLog(@"Width: %d", width); NSLog(@"Height: %d", height); NSLog(@"QueryString: %@", queryString); [self asyncGetImage:[NSString stringWithFormat:@"%@%@", object, queryString] success:success failure:failure]; } @end