上传对象
对象是存储数据的基本单元。对象由元信息(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对文件大小有限制,最大能上传5GB大小的文件,超过5GB需要使用分片上传。
下载对象
对象是存储数据的基本单元。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成。对象由桶内部唯一的Key来标识。本文介绍如何下载对象。
接口定义
- (void)getObject:(AWSS3GetObjectRequest *)request
completionHandler:(void (^)(AWSS3GetObjectOutput *response, NSError *error))completionHandler
参数说明
参数名 | 类型 | 说明 |
---|---|---|
bucket | NSString | bucket名 |
key | NSString | 对象名称 |
range | NSString | 下载区间,参考 https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35 |
代码示例
- (void) getObjectWithBucket:(NSString*) bucketName
key:(NSString*)keyName {
AWSS3GetObjectRequest *request = [[AWSS3GetObjectRequest alloc] init];
request.bucket = bucketName;
request.key = keyName;
[self.s3 getObject:request completionHandler:^(AWSS3GetObjectOutput * _Nullable response, NSError * _Nullable error) {
if (error != nil) {
NSLog(@"error: %@", error);
return;
}
}];
}
删除对象
对象是存储数据的基本单元。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成。对象由桶内部唯一的Key来标识。本文介绍如何删除对象。
接口定义
- (void)deleteObject:(AWSS3DeleteObjectRequest *)request
completionHandler:(void (^)(AWSS3DeleteObjectOutput *response, NSError *error))completionHandler
参数说明
参数名 | 类型 | 说明 |
---|---|---|
bucket | NSString | 包含bucket及相关的请求参数 |
key | NSString | 要删除的对象名称 |
代码示例
- (void) deleteObjectWithBucket:(NSString*) bucketName
key:(NSString*)keyName {
AWSS3DeleteObjectRequest *request = [[AWSS3DeleteObjectRequest alloc] init];
request.bucket = bucketName;
request.key = keyName;
[self.s3 deleteObject:request completionHandler:^(AWSS3DeleteObjectOutput * _Nullable response, NSError * _Nullable error) {
if (error != nil) {
NSLog(@"error: %@", error);
return;
}
}];
}
复制对象
对象是存储数据的基本单元。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成。对象由桶内部唯一的Key来标识。本文介绍如何复制对象。
接口定义
- (void)replicateObject:(AWSS3ReplicateObjectRequest *)request
completionHandler:(void (^)(AWSS3ReplicateObjectOutput *response, NSError *error))completionHandler
参数说明
参数名 | 类型 | 说明 |
---|---|---|
bucket | NSString | 目的bucket |
key | NSString | 目的对象名 |
replicateSource | NSString | 源bucket和对象名,使用/分割 |
代码示例
- (void) copyObjectWithBucket:(NSString*)bucketName
key:(NSString*)keyName
sourceBucket:(NSString*)sourceBucketName
sourceKey:(NSString*)sourceKey {
AWSS3ReplicateObjectRequest *request = [[AWSS3ReplicateObjectRequest alloc] init];
request.bucket = bucketName;
request.key = keyName;
request.replicateSource = [NSString stringWithFormat:@"%@/%@", sourceBucketName, sourceKey];
[self.s3 replicateObject:request completionHandler:^(AWSS3ReplicateObjectOutput * _Nullable response, NSError * _Nullable error) {
if (error != nil) {
NSLog(@"error: %@", error);
return;
}
}];
}
获取对象元数据
对象是存储数据的基本单元。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成。对象由桶内部唯一的Key来标识。本文介绍如何获取对象元数据。
接口定义
- (void)headObject:(AWSS3HeadObjectRequest *)request
completionHandler:(void (^)(AWSS3HeadObjectOutput *response, NSError *error))completionHandler
参数说明
参数名 | 类型 | 说明 |
---|---|---|
bucket | NSString | bucket名 |
key | NSString | 对象名称 |
代码示例
- (void) headObjectWithBucket:(NSString*) bucketName
key:(NSString*)keyName {
AWSS3HeadObjectRequest *request = [[AWSS3HeadObjectRequest alloc] init];
request.bucket = bucketName;
request.key = keyName;
[self.s3 headObject:request completionHandler:^(AWSS3HeadObjectOutput * _Nullable response, NSError * _Nullable error) {
if (error != nil) {
NSLog(@"error: %@", error);
return;
}
}];
}
获取对象列表
对象是存储数据的基本单元。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成。对象由桶内部唯一的Key来标识。本文介绍如何获取对象列表。
接口定义
- (void)listObjects:(AWSS3ListObjectsRequest *)request
completionHandler:(void (^)(AWSS3ListObjectsOutput *response, NSError *error))completionHandler
参数说明
参数名 | 类型 | 说明 |
---|---|---|
bucket | NSString | bucket名 |
prefix | NSString | 如果非NULL,则仅列举以指定的prefix作为前缀的对象 |
marker | NSString | 如果非NULL,指定一个标识符,在列举桶内对象列表时,返回的对象列表将仅是按照字典顺序排序后位于这个标识符之后的对象 |
delimiter | NSString | 如果非NULL,则是用来对桶内对象进行分组的字符串。所有名称包含指定的前缀且第一次出现delimiter字符之间的对象将作为一组元素,在返回信息的CommonPrefixes节点显示 |
maxkeys | NSNumber | 指定返回对象的最大数量,若为0则列举所有对象 |
代码示例
- (void) listObjectsWithBucket:(NSString*) bucketName {
AWSS3ListObjectsRequest *request = [[AWSS3ListObjectsRequest alloc] init];
request.bucket = bucketName;
[self.s3 listObjects:request completionHandler:^(AWSS3ListObjectsOutput * _Nullable response, NSError * _Nullable error) {
if (error != nil) {
NSLog(@"error: %@", error);
return;
}
}];
}
设置对象访问权限
对象默认的权限是拥有者私有权限,只能由拥有者进行访问;系统提供公共读和公共读写等权限供用户选择。用户可以在上传的时候设置对象的访问权限,也可以通过putObjectAcl接口修改对象的访问权限。
接口定义
- (void)putObjectAcl:(AWSS3PutObjectAclRequest *)request
completionHandler:(void (^ _Nullable)(AWSS3PutObjectAclOutput * _Nullable response, NSError * _Nullable error))completionHandler;
参数说明
参数名 | 类型 | 说明 |
---|---|---|
bucket | NSString | bucket名 |
key | NSString | 将要上传的对象的文件名 |
ACL | AWSS3ObjectCannedACL | 文件控制权限,如AWSS3ObjectCannedACLPublicRead |
代码示例
- (void) putObjectAcl:(NSString*) bucketName key:(NSString*)keyName {
AWSS3PutObjectAclRequest *request = [[AWSS3PutObjectAclRequest alloc] init];
request.bucket = bucketName;
request.key = keyName;
request.ACL = AWSS3ObjectCannedACLPublicRead;
[self.s3 putObjectAcl:request completionHandler:^(AWSS3PutObjectAclOutput * _Nullable response, NSError * _Nullable error) {
if (error != nil) {
NSLog(@"error: %@", error);
return;
}
NSLog(@"success");
}];
}