上传对象

对象是存储数据的基本单元。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成。对象由桶内部唯一的Key来标识。本文介绍如何上传对象。

接口定义:

- (void)putObject:(AWSS3PutObjectRequest *)request
     completionHandler:(void (^)(AWSS3PutObjectOutput *response, NSError *error))completionHandler

参数:

参数名 类型 说明
bucket NSString bucket名
key NSString 将要上传的对象的文件名
body id (NSString|NSData) 要上传的内容
contentLength NSNumber 必填,上传内容的长度
ACL AWSS3ObjectCannedACL 可选,文件控制权限,如AWSS3ObjectCannedACLPublicRead
contentType NSString 可选,文件类型,如image/jpeg

代码示例:

- (void) putObjectWithBucket:(NSString*) bucketName key:(NSString*)keyName {
    NSString * body = @"This is a test file";
    
    AWSS3PutObjectRequest *request = [[AWSS3PutObjectRequest alloc] init];
    request.bucket = bucketName;
    request.key = keyName;
    request.body = body;
    request.contentLength = [NSNumber numberWithInteger:body.length];
    request.ACL = AWSS3ObjectCannedACLPublicRead;
    [self.s3 putObject:request completionHandler:^(AWSS3PutObjectOutput * _Nullable response, NSError * _Nullable error) {
        if (error != nil) {
            NSLog(@"error: %@", error);
            return;
        }
        NSLog(@"success: %@", response.ETag);
    }];
}

注意:putObject对文件大小有限制,最大能上传1GB大小的文件,超过1GB需要使用分片上传。