融合接口

SDK提供封装好的融合接口,方便用户实现分片上传的功能。

接口定义:

public TransferObserver upload(String bucket, String key, File file)

public TransferObserver upload(String bucket, String key, File file, CannedAccessControlList cannedAcl)

public TransferObserver upload(String bucket, String key, File file, ObjectMetadata metadata)

public TransferObserver upload(String bucket, String key, File file, ObjectMetadata metadata, CannedAccessControlList cannedAcl)

public TransferObserver upload(String bucket, String key, File file, ObjectMetadata metadata, CannedAccessControlList cannedAcl, TransferListener listener)

参数:

参数名 类型 说明
bucketName String bucket名
key String 要上传的对象名称
file FILE 上传的文件对象
metadata ObjectMetadata 可选参数,元数据,可以设置ContentType和自定义元数据
cannedAcl CannedAccessControlList 文件操作权限(Private|PublicRead)
listener TransferListener 上传文件回调

代码示例:

private void beginUpload(File file) {
	TransferUtility transferUtility = TransferUtility.builder()
			.context(context)
			.s3Client(S3Client)
			.build();
			
	TransferObserver observer = transferUtility.upload(
			bucketName,
			key,
			file
	);
}

关于Content-Type的配置

Content-Type用于标识文件的资源类型,比如image/pngimage/jpg 是图片类型,video/mpegvideo/mp4是视频类型,text/plaintext/html是文本类型, 浏览器针对不同的Content-Type会有不同的操作,比如图片类型可以预览,视频类型可以播放,文本类型可以直接打开。application/octet-stream类型会直接打开下载窗口。

在android sdk中,如果用户没有设置Content-Type,会根据对象的key后缀扩展名自动生成Content-Type。