1. 導(dǎo)入 AWSS3 的 pod 庫(kù)
搜索 AWSS3 的 iOS sdk 庫(kù)
$ pod search AWSS3

在項(xiàng)目的Podfile文件中添加 AWSS3,由于依賴,會(huì)同時(shí)導(dǎo)入 AWSCore庫(kù)
pod 'AWSS3', '~> 2.36.6'
ps:純 OC 的項(xiàng)目過(guò)程中可能遇到對(duì)swift的要求,可以在項(xiàng)目中創(chuàng)建一個(gè) swift,并接受創(chuàng)建 Bridging-Hearder.h文件,這個(gè)文件還會(huì)有你的項(xiàng)目名字,然后在 build setting 中獎(jiǎng) Swift Language Version 設(shè)置為 Swift 5 就可以。
2. 上傳功能實(shí)現(xiàn)過(guò)程
2.1 配置Credentials
引入頭文件
@import AWSS3;
//配置Credentials 以及 ServiceConfiguration
AWSStaticCredentialsProvider *credentials = [[AWSStaticCredentialsProvider alloc] initWithAccessKey:@"Your-AccessKey" secretKey:@"Your-secretKey"];
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionAPEast1 credentialsProvider:credentials];
[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;
上面的代碼里有 3 個(gè)參數(shù),Your-AccessKey,Your-secretKey,Region
Region 你可以查看自己 bucket 是在那個(gè)區(qū)域的,然后在 AWSRegionType 中尋找對(duì)應(yīng)區(qū)域的 type 就可以了,比如香港就是AWSRegionAPEast1
Your-AccessKey和Your-secretKey: 是 IAM 中用戶的訪問(wèn)密鑰信息,獲取方式如下:
首先需要在IAM 服務(wù)中創(chuàng)建一個(gè)用戶,創(chuàng)建過(guò)程很簡(jiǎn)單,這里就不貼圖了。
第二部是為用戶設(shè)置 Accesskey,點(diǎn)擊下圖中紅色框區(qū)域,創(chuàng)建步驟如后續(xù)圖片,最后一步獲得密鑰后記得保存,后續(xù)無(wú)法再次查看




此處獲得的訪問(wèn)密鑰就是Your-AccessKey,而秘密訪問(wèn)密鑰就是Your-secretKey。
2.2 上傳功能實(shí)現(xiàn)
AWSS3TransferUtilityUploadExpression *expression = [AWSS3TransferUtilityUploadExpression new];
expression.progressBlock = ^(AWSS3TransferUtilityTask *task, NSProgress *progress) {
dispatch_async(dispatch_get_main_queue(), ^{
// 更新進(jìn)度UI
NSLog(@"Upload Progress: %f", progress.fractionCompleted);
});
};
AWSS3TransferUtility *transferUtility = [AWSS3TransferUtility defaultS3TransferUtility];
[transferUtility uploadFile:fileURL bucket:@"Your-Bucket-Name" key:@"Your-File-Name" contentType:@"Your-File-Type" expression:expression completionHandler:^(AWSS3TransferUtilityUploadTask * _Nonnull task, NSError * _Nullable error) {
}];
代碼中有imageURL,Your-Bucket-Name,Your-File-Name和Your-File-Type
fileURL就是文件的 URL,如果是相冊(cè)獲取的圖片的話就是NSURL *imageURL = [info objectForKey:UIImagePickerControllerImageURL];
Your-Bucket-Name就是你 bucket 的名字,就是在 bucket 列表中的名字
Your-File-Name就是文件保存在服務(wù)器上使用的名字
Your-File-Type就是文件類(lèi)型,圖片對(duì)應(yīng)就是image/png, 其他類(lèi)型可以自行搜索。
到此,AWSS3 的上傳功能就完成了,有問(wèn)題歡迎大家留言。