上傳對象
對象是存儲數據的基本單元。對象由元信息(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 | 下載區間,參考 |
代碼示例
- (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");
}];
}