上传对象
对象是存储数据的基本单元。对象由元信息(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需要使用分片上传。