上传对象

对象是存储数据的基本单元。对象由元信息(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需要使用分片上传。