對象相關接口
更新時間 2025-10-11 11:19:12
最近更新時間: 2025-10-11 11:19:12
分享文章
獲取對象列表
對象是存儲數據的基本單元。對象由元信息(Object Meta),用戶數據(Data)和文件名(Key)組成。對象由桶內部唯一的Key來標識。本章節介紹如何獲取對象列表。
接口定義
// 簡化接口
public ObjectListing listObjects(String bucketName)
// 完整接口
public ObjectListing listObjects(ListObjectsRequest listObjectsRequest)參數說明
| 參數名 | 類型 | 說明 |
|---|---|---|
| bucketName | String | 包含bucket及相關的請求參數 |
| prefix | String | 如果非NULL,則僅列舉以指定的prefix作為前綴的對象 |
| marker | String | 如果非NULL,指定一個標識符,在列舉桶內對象列表時,返回的對象列表將僅是按照字典順序排序后位于這個標識符之后的對象 |
| delimiter | String | 如果非NULL,則是用來對桶內對象進行分組的字符串。所有名稱包含指定的前綴且第一次出現delimiter字符之間的對象將作為一組元素,在返回信息的CommonPrefixes節點顯示 |
| maxkeys | int | 指定返回對象的最大數量,若為0則列舉所有對象 |
代碼示例
public void ListObjects(String bucketName, OnS3ResponseListener<List<S3ObjectSummary>> listener) {
GlobalThreadPool.getInstance().execute(() -> {
try {
List<S3ObjectSummary> list = sS3Client.listObjects(bucketName).getObjectSummaries();
?
Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(() -> listener.onResponse(list));
} catch (Exception e) {
Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(() -> listener.onError());
}
});
}上傳對象
對象是存儲數據的基本單元。對象由元信息(Object Meta),用戶數據(Data)和文件名(Key)組成。對象由桶內部唯一的Key來標識。本章節介紹如何上傳對象。
接口定義
// 簡化接口
public PutObjectResult putObject(String bucketName, String key, File file)
// 完整接口
public PutObjectResult putObject(PutObjectRequest putObjectRequest)參數說明
| 參數名 | 類型 | 說明 |
|---|---|---|
| bucketName | String | 包含bucket及相關的請求參數 |
| key | String | 將要上傳的對象的文件名 |
| file | FILE | 將要上傳的文件對象,和inputStream二選一 |
| inputStream | InputStream | 將要上傳的文件流,和file二選一 |
| metadata | ObjectMetadata | 可選參數,元數據,可以設置ContentType和自定義元數據 |
| cannedAcl | CannedAccessControlList | 可選參數,權限控制參數 |
| accessControlList | AccessControlList | 可選參數,權限控制參數 |
代碼示例
public void PutObject(String bucketName, String objectKey, File file,
OnS3ResponseListener<PutObjectResult> listener) {
GlobalThreadPool.getInstance().execute(() -> {
try {
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectKey, file);
ObjectMetadata metadata = new ObjectMetadata();
//metadata.setContentType("image/jpeg"); // content-type
//metadata.addUserMetadata("my-metadata-key", "my-metadata-value"); // 自定義元數據
putObjectRequest.setMetadata(metadata);
PutObjectResult result = sS3Client.putObject(putObjectRequest);
Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(() -> listener.onResponse(result));
} catch (Exception e) {
Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(() -> listener.onError());
}
});
}注意:putObject對文件大小有限制,最大能上傳5GB大小的文件,超過5GB需要使用分片上傳。
下載對象
對象是存儲數據的基本單元。對象由元信息(Object Meta),用戶數據(Data)和文件名(Key)組成。對象由桶內部唯一的Key來標識。本章節介紹如何下載對象。
接口定義
// 簡化接口
public S3Object getObject(String bucketName, String key)
// 完整接口
public S3Object getObject(GetObjectRequest getObjectRequest)參數說明
| 參數名 | 類型 | 說明 |
|---|---|---|
| s3ObjectIdBuilder | S3ObjectIdBuilder | 包含bucketName和key |
| range | long[] | 獲取文件的區間 |
| generalProgressListener | ProgressListener | 進度回調 |
代碼示例
public void GetObjects(String bucketName, String objectKey,
OnS3ResponseListener<S3Object> listener) {
GlobalThreadPool.getInstance().execute(() -> {
try {
S3Object result = sS3Client.getObject(bucketName, objectKey);
Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(() -> listener.onResponse(result));
} catch (Exception e) {
Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(() -> listener.onError());
}
});
}復制對象
對象是存儲數據的基本單元。對象由元信息(Object Meta),用戶數據(Data)和文件名(Key)組成。對象由桶內部唯一的Key來標識。本章節介紹如何復制對象。
接口定義
// 簡化接口
public CopyObjectResult copyObject(String sourceBucketName, String sourceKey, String destinationBucketName, String destinationKey)
// 完整接口
public CopyObjectResult copyObject(CopyObjectRequest copyObjectRequest)參數說明
| 參數名 | 類型 | 說明 |
|---|---|---|
| sourceBucketName | String | 源bucket及請求參數 |
| sourceKey | String | 源對象名 |
| destinationBucketName | String | 目的bucket |
| destinationKey | String | 目的對象名 |
代碼示例
public void CopyObjects(String sourceBucketName, String sourceObjectKey,
String destBucketName, String destObjectKey,
OnS3ResponseListener<CopyObjectResult> listener) {
GlobalThreadPool.getInstance().execute(() -> {
try {
CopyObjectResult result = sS3Client.copyObject(sourceBucketName, sourceObjectKey, destBucketName, destObjectKey);
?
Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(() -> listener.onResponse(result));
} catch (Exception e) {
Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(() -> listener.onError());
}
});
}刪除對象
對象是存儲數據的基本單元。對象由元信息(Object Meta),用戶數據(Data)和文件名(Key)組成。對象由桶內部唯一的Key來標識。本章節介紹如何刪除對象。
接口定義
// 簡化接口
public void deleteObject(String bucketName, String key)
// 完整接口
public void deleteObject(DeleteObjectRequest deleteObjectRequest)參數說明
| 參數名 | 類型 | 說明 |
|---|---|---|
| bucketName | String | 包含bucket及相關的請求參數 |
| key | String | 要刪除的對象名稱 |
代碼示例
public void DeleteObjects(String bucketName, String objectKey,
OnS3ResultListener listener) {
GlobalThreadPool.getInstance().execute(() -> {
try {
sS3Client.deleteObject(bucketName, objectKey);
Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(() -> listener.onSuccess());
} catch (Exception e) {
Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(() -> listener.onError());
}
});
}獲取對象元數據
對象是存儲數據的基本單元。對象由元信息(Object Meta),用戶數據(Data)和文件名(Key)組成。對象由桶內部唯一的Key來標識。本章節介紹如何獲取對象元數據。
接口定義
// 簡化接口
public ObjectMetadata getObjectMetadata(String bucketName, String key)
// 完整接口
public ObjectMetadata getObjectMetadata(GetObjectMetadataRequest getObjectMetadataRequest)參數說明
| 參數名 | 類型 | 說明 |
|---|---|---|
| bucketName | String | 包含bucket及相關的請求參數 |
| key | String | 對象名稱 |
代碼示例
public void GetObjectMetadata(String bucketName, String objectKey,
OnS3ResponseListener<ObjectMetadata> listener) {
GlobalThreadPool.getInstance().execute(() -> {
try {
ObjectMetadata result = sS3Client.getObjectMetadata(bucketName, objectKey);
Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(() -> listener.onResponse(result));
} catch (Exception e) {
Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(() -> listener.onError());
}
});
}