对象相关接口
更新时间 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());
}
});
}