因?yàn)楣緲I(yè)務(wù)的原因,新的APP使用白山云存儲(chǔ)上傳圖片視頻資源,而白山云移動(dòng)端存儲(chǔ)功能的實(shí)現(xiàn)依賴亞馬遜的SDK粱年,下面就簡(jiǎn)單介紹一下使用亞馬遜SDK上傳圖片
AmazonSDK地址
首先導(dǎo)入AmazonSDK
69636E35-EA72-4738-9CD6-C69B87E6EBC0.png
然后在application:didFinishLaunchingWithOptions方法里設(shè)置好SDK的配置
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
[self configAWS];
...
return YES;
}
配置上傳需要的參數(shù):
- (void)configAWS {
AWSEndpoint *EndPoint = [[AWSEndpoint alloc] initWithURLString:END_POINT];
AWSBasicSessionCredentialsProvider *provider =
[[AWSBasicSessionCredentialsProvider alloc] initWithAccessKey:ACCESS_KEY
secretKey:SECRET_KEY
sessionToken:@"latest"];
//如果有identityPoolId,可以使用identityPoolId設(shè)置
//AWSCognitoCredentialsProvider *provider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:POOL_ID];
AWSServiceConfiguration *configuration =
[[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1
endpoint:EndPoint
credentialsProvider:provider];
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
}
上傳實(shí)現(xiàn):
+ (void)updateImageWithImage:(UIImage *)image completion:(void (^)(NSString *))completion {
CGFloat width = image.size.width;
CGFloat height = image.size.height;
NSString *fileName = [[[NSProcessInfo processInfo] globallyUniqueString] stringByAppendingString:@".png"];
NSString *filePath = [self saveToFilePathWithImage:image name:fileName];
__weak NSString *weakFileName = fileName;
id(^ContinuationBlock)(AWSTask *task) = ^id(AWSTask *task) {
if (task.error) {
[SVProgressHUD showErrorWithStatus:@"上傳失敗"];
if (completion) {
completion(nil);
}
}
else {
__strong NSString *strongFileName = weakFileName;
//上傳成功并不返回url,訪問(wèn)資源需要使用AmazonSDK解碼粟焊,可以在上傳的時(shí)候設(shè)置成可讀寫,然后用拼接出來(lái)的url訪問(wèn)圖片
NSString *url = [[@"http:/ /....com" stringByAppendingPathComponent:BUCKET_NAME] stringByAppendingPathComponent:strongFileName];
url = [url stringByReplacingOccurrencesOfString:@" " withString:@""];
if (completion) {
completion(url);
}
}
return nil;
};
AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new];
uploadRequest.body = [NSURL fileURLWithPath:filePath];
uploadRequest.key = fileName;
uploadRequest.bucket = @"your bucket name(這里填你的bucketname)";
// 設(shè)置成可讀寫的孙蒙,才可以使用拼接的url
uploadRequest.ACL = AWSS3ObjectCannedACLPublicReadWrite;
AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
[[transferManager upload:uploadRequest] continueWithBlock:ContinuationBlock];
}
+ (NSString *)saveToFilePathWithImage:(UIImage *)image
name:(NSString *)name {
NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"upload"];
NSFileManager *manager = [NSFileManager defaultManager];
if (![manager fileExistsAtPath:filePath]) {
[manager createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil];
}
filePath = [filePath stringByAppendingPathComponent:name];
NSData * imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:filePath atomically:YES];
return filePath;
}
這樣就能實(shí)現(xiàn)上傳功能了