1. 导入 AWSS3 的 pod 库
搜索 AWSS3 的 iOS sdk 库
$ pod search AWSS3
在项目的Podfile文件中添加 AWSS3,由于依赖,会同时导入 AWSCore库
pod 'AWSS3', '~> 2.36.6'
ps:纯 OC 的项目过程中可能遇到对swift的要求,可以在项目中创建一个 swift,并接受创建 Bridging-Hearder.h文件,这个文件还会有你的项目名字,然后在 build setting 中奖 Swift Language Version 设置为 Swift 5 就可以。
2. 上传功能实现过程
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 个参数,Your-AccessKey,Your-secretKey,Region
Region 你可以查看自己 bucket 是在那个区域的,然后在 AWSRegionType 中寻找对应区域的 type 就可以了,比如香港就是AWSRegionAPEast1
Your-AccessKey和Your-secretKey: 是 IAM 中用户的访问密钥信息,获取方式如下:
首先需要在IAM 服务中创建一个用户,创建过程很简单,这里就不贴图了。
第二部是为用户设置 Accesskey,点击下图中红色框区域,创建步骤如后续图片,最后一步获得密钥后记得保存,后续无法再次查看
此处获得的访问密钥就是Your-AccessKey,而秘密访问密钥就是Your-secretKey。
2.2 上传功能实现
AWSS3TransferUtilityUploadExpression *expression = [AWSS3TransferUtilityUploadExpression new];
expression.progressBlock = ^(AWSS3TransferUtilityTask *task, NSProgress *progress) {
dispatch_async(dispatch_get_main_queue(), ^{
// 更新进度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,如果是相册获取的图片的话就是NSURL *imageURL = [info objectForKey:UIImagePickerControllerImageURL];
Your-Bucket-Name就是你 bucket 的名字,就是在 bucket 列表中的名字
Your-File-Name就是文件保存在服务器上使用的名字
Your-File-Type就是文件类型,图片对应就是image/png, 其他类型可以自行搜索。
到此,AWSS3 的上传功能就完成了,有问题欢迎大家留言。