上传对象
对象是存储数据的基本单元。对象由元信息(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对文件大小有限制,最大能上传1GB大小的文件,超过1GB需要使用分片上传。