本SDK使用了loopj/android-async-http请求库,使用前请先下载对应的jar包,并导入工程
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
SDK以jar包形式呈现。将releases文件夹下ks3-android-sdk-1.0.1.jar,以及依赖库文件,放入工程libs文件下。
支持Android 2.2及以上版本
线程安全: 考虑到Android 4.0之后不再允许主线程内进行网络请求,以及UI操作必须在主线程中进行。ks3-android-sdk所提供的API,默认让开发者在主线程进行调用,且会以异步方式进行请求,请求回调方法仍将执行在主线程。如果开发者需要用非异步方式进行调用(即在自己开的线程内,调用同步API请求),请在初始化Ks3Client时,调用以下方法,以确保API以非异步方式进行。
client.setIsUseAsyncMode(false);
由于在App端明文存储AccessKey、SecretKey是极不安全的,因此推荐的使用场景如下图所示:
Ks3Client初始化包含以下两种:
对应的初始化代码如下:
For AccessKey、SecretKey
/* Directly using ak&sk */
client = new Ks3Client(Constants.ACCESS_KEY_ID,Constants.ACCESS_KEY_SECRET, DummyActivity.this);
configuration = Ks3ClientConfiguration.getDefaultConfiguration();
client.setConfiguration(configuration);
For AuthListener
/* Using authListener,Let your app server saved ak&sk and return token*/
client = new Ks3Client(new AuthListener() {
@Override
public String onCalculateAuth(String httpMethod,
String ContentType, String Date, String ContentMD5,
String Resource, String Headers) {
// 此处应由APP端向业务服务器发送post请求返回Token。
// 需要注意该回调方法运行在非主线程
//
String token = requsetToAppServer(httpMethod, ContentType,
Date, ContentMD5, Resource, Headers);
return token;
}
}, DummyActivity.this);
configuration = Ks3ClientConfiguration.getDefaultConfiguration();
client.setConfiguration(configuration);
为方便开发者使用,SDK在REST API接口返回值基础上进行了封装,具体更多封装类详情请见 SDK-Javadoc:
列出客户所有的 Bucket 信息
方法名:
public void listBuckets(ListBucketsResponceHandler resultHandler) throws Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.listBuckets(new ListBucketsResponceHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeader,
ArrayList<Bucket> resultList) {
}
@Override
public void onFailure(int statesCode,
Header[] responceHeader, String responce,
Throwable throwable) {
}
}
);
列出客户所有的 Bucket 信息
方法名:
public void listBuckets(ListBucketsRequest request,ListBucketsResponceHandler resultHandler) throws Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.listBuckets(new ListBucketsRequest(),new ListBucketsResponceHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeader,
ArrayList<Bucket> resultList) {
}
@Override
public void onFailure(int statesCode,
Header[] responceHeader, String responce,
Throwable throwable) {
}
}
);
创建一个新的Bucket
方法名:
public void createBucket(String bucketName,CreateBucketResponceHandler resultHandler) throw Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.createBucket(Constants.BucketName,
new CreateBucketResponceHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable throwable) {
}
}
);
创建一个新的Bucket,并携带AccessControlList设置权限
方法名:
public void createBucket(String bucketName,AccessControlList list,CreateBucketResponceHandler resultHandler) throw Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
AccessControlList acl = new AccessControlList();
GranteeId grantee = new GranteeId() ;
grantee.setIdentifier("12773456");
grantee.setDisplayName("guoliTest222");
acl.addGrant(grantee, Permission.Read);
GranteeId grantee1 = new GranteeId() ;
grantee1.setIdentifier("123005789");
grantee1.setDisplayName("guoliTest2D2");
acl.addGrant(grantee1, Permission.Write);
client.createBucket(Constants.BucketName,acl,
new CreateBucketResponceHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable throwable) {
}
}
);
创建一个新的Bucket,并携带CannedAccessControlList设置权限
方法名:
public void createBucket(String bucketName,CannedAccessControlList list,CreateBucketResponceHandler resultHandler) throw Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
CannedAccessControlList cannedAcl = CannedAccessControlList.PublicReadWrite;
client.createBucket(Constants.BucketName,cannedAcl,
new CreateBucketResponceHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable throwable) {
}
}
);
创建一个新的Bucket
方法名:
public void createBucket(CreateBucketRequest request,CreateBucketResponceHandler resultHandler) throw Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.createBucket(new CreateBucketRequest(Constants.BucketName),
new CreateBucketResponceHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable throwable) {
}
}
);
删除指定Bucket
方法名:
public void deleteBucket(String bucketname,DeleteBucketResponceHandler handler) throws Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.deleteBucket(Constants.BucketName,
new DeleteBucketResponceHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable throwable) {
}
}
);
删除指定Bucket
方法名:
public void deleteBucket(DeleteBucketRequest request,DeleteBucketResponceHandler handler) throws Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.deleteBucket(new DeleteBucketRequest(Constants.BucketName),
new DeleteBucketResponceHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable throwable) {
}
}
);
获取Bucket的ACL
方法名:
public void getBucketACL(String bucketName ,GetBucketACLResponceHandler resultHandler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.getBucketACL(Constants.BucketName, new GetBucketACLResponceHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders,
AccessControlPolicy accessControlPolicy) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable paramThrowable) {
}
}
);
获取Bucket的ACL
方法名:
public void getBucketACL(GetBucketACLRequest request ,GetBucketACLResponceHandler resultHandler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.getBucketACL(new GetBucketACLRequest(Constants.BucketName), new GetBucketACLResponceHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders,
AccessControlPolicy accessControlPolicy) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable paramThrowable) {
}
}
);
设置Bucket的ACL,以AccessControlList形式
方法名:
public void putBucketACL(String bucketName, AccessControlList accessControlList, PutBucketACLResponseHandler resultHandler) throws Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
AccessControlList acl = new AccessControlList();
GranteeId grantee = new GranteeId();
grantee.setIdentifier("12773456");
grantee.setDisplayName("guoliTest222");
acl.addGrant(grantee, Permission.Read);
client.putBucketACL(bucketName,acl, new PutBucketACLResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable paramThrowable) {
}
}
);
设置Bucket的ACL,以CannedAccessControlList形式
方法名:
public void putBucketACL(String bucketName,CannedAccessControlList CannedAcl,PutBucketACLResponseHandler resultHandler) throws Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
CannedAccessControlList cannedAcl = CannedAccessControlList.PublicReadWrite;
client.putBucketACL(bucketName, cannedAcl,new PutBucketACLResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable paramThrowable) {
}
}
);
设置Bucket的ACL
方法名:
public void putBucketACL(PutBucketACLRequest requset,PutBucketACLResponseHandler resultHandler) throws Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.putBucketACL(new PutBucketACLRequest(bucketName,cannedAcl), new PutBucketACLResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable paramThrowable) {
}
}
);
查询是否已经存在指定Bucket
方法名:
public void headBucket(String bucketname,HeadBucketResponseHandler resultHandler) throws Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.headBucket(Constants.BucketName,
new HeadBucketResponseHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable paramThrowable) {
}
}
);
查询是否已经存在指定Bucket
方法名:
public void headBucket(HeadBucketRequest request,HeadBucketResponseHandler resultHandler) throws Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.headBucket(new HeadBucketRequest(Constants.BucketName,
new HeadBucketResponseHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable paramThrowable) {
}
}
);
下载该Object数据
方法名:
public void getObject(Context context, String bucketname, String key, GetObjectResponceHandler getObjectResponceHandler(File file,String bucketname,String objectKey))throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.getObject(DummyActivity.this,Constants.BucketName,Constants.ObjectKey,
new GetObjectResponceHandler(new File(Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
Constants.ObjectKey), Constants.BucketName,
Constants.ObjectKey) {
@Override
public void onTaskSuccess(int statesCode, Header[] responceHeaders) {
}
@Override
public void onTaskFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
@Override
public void onTaskFinish(){
}
@Override
public void onTaskStart(){
}
@Override
public void onTaskProgress(double progress){
//运行在非UI线程,更新UI时需要注意
//Progress为0-100之间的double类型数值
}
}
);
下载该Object数据
方法名:
public void getObject(GetObjectRequest request, GetObjectResponceHandler getObjectResponceHandler(File file,String bucketname,String objectKey))throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.getObject(new GetObjectRequest(bucketname, key),
new GetObjectResponceHandler(new File(Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
Constants.ObjectKey), Constants.BucketName,
Constants.ObjectKey) {
@Override
public void onTaskSuccess(int statesCode, Header[] responceHeaders) {
}
@Override
public void onTaskFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
@Override
public void onTaskFinish(){
}
@Override
public void onTaskStart(){
}
@Override
public void onTaskProgress(double progress){
//运行在非UI线程,更新UI时需要注意
//Progress为0-100之间的double类型数值
}
}
);
查询是否已经存在指定Object
方法名:
public void headObject(String bucketname, String objectkey,HeadObjectResponseHandler resultHandler)throws Ks3ClientException, Ks3ServiceException;
参数说明:
回调参数:
代码示例:
client.headObject(Constants.BucketName,Constants.ObjectKey,
new HeadObjectResponseHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
HeadObjectResult headObjectResult) {
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable throwable) {
}
}
);
查询是否已经存在指定Object
方法名:
public void headObject(HeadObjectRequest request,HeadObjectResponseHandler resultHandler)throws Ks3ClientException, Ks3ServiceException;
参数说明:
回调参数:
代码示例:
client.headObject(new HeadObjectRequest(Constants.BucketName,Constants.ObjectKey)
new HeadObjectResponseHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
HeadObjectResult headObjectResult) {
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable throwable) {
}
}
);
删除指定Object
方法名:
public void deleteObject(String bucketname, String objectKey , DeleteObjectRequestHandler handler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.deleteObject(Constants.BucketName,Constants.ObjectKey, new DeleteObjectRequestHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
}
);
删除指定Object
方法名:
public void deleteObject(DeleteObjectRequest request, DeleteObjectRequestHandler handler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.deleteObject(new DeleteObjectRequest(Constants.BucketName,Constants.ObjectKey),new DeleteObjectRequestHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
}
);
获得Object的acl
方法名:
public void getObjectACL(String bucketName, String ObjectName , GetObjectACLResponseHandler resultHandler)throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.getObjectACL(Constants.BucketName,Constants.ObjectKey,
new GetObjectACLResponseHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
AccessControlPolicy accessControlPolicy) {
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable paramThrowable) {
}
}
);
获得Object的acl
方法名:
public void getObjectACL(GetObjectACLRequest request, GetObjectACLResponseHandler resultHandler)throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.getObjectACL(new GetObjectACLRequest(Constants.BucketName,Constants.ObjectKey),
new GetObjectACLResponseHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
AccessControlPolicy accessControlPolicy) {
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable paramThrowable) {
}
}
);
上传object的acl,以CannedAccessControlList形式
方法名:
public void putObjectACL(String bucketName, String objectKey,CannedAccessControlList list, PutObjectACLResponseHandler resultHandler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
CannedAccessControlList list = CannedAccessControlList.PublicRead;
client.putObjectACL(bucketName, objectKey, list, new PutObjectACLResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
}
);
上传object的acl,以AccessControlList形式
方法名:
public void putObjectACL(String bucketName, String objectName,AccessControlList list,PutObjectACLResponseHandler resultHandler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
AccessControlList acList = new AccessControlList();
GranteeId grantee = new GranteeId();
grantee.setIdentifier("123456");
grantee.setDisplayName("TESTTEST1");
acList.addGrant(grantee, Permission.Read);
client.putObjectACL(bucketName, objectKey, list, new PutObjectACLResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
}
);
上传object的acl
方法名:
public void putObjectACL(PutObjectACLRequest request, PutObjectACLResponseHandler resultHandler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
CannedAccessControlList list = CannedAccessControlList.PublicRead;
client.putObjectACL(new PutObjectACLRequest(bucketName, objectKey, list), new PutObjectACLResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
}
);
列举Bucket内的Object
方法名:
public void listObjects(String bucketname,ListObjectsResponseHandler resultHandler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.listObjects(Constants.BucketName, new ListObjectsResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders,
ObjectListing objectListing) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
}
);
列举Bucket内的Object
方法名:
public void listObjects(String bucketname,String prefix,ListObjectsResponseHandler resultHandler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.listObjects(Constants.BucketName,Constants.Prefix, new ListObjectsResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders,
ObjectListing objectListing) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
}
);
列举Bucket内的Object
方法名:
public void listObjects(String bucketName, String prefix, String marker, String delimiter, Integer maxKeys, ListObjectsResponseHandler resultHandler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.listObjects(new ListObjectsRequest(bucketname,prefix,delimiter,maxKeys), new ListObjectsResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders,
ObjectListing objectListing) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
}
);
列举Bucket内的Object
方法名:
public void listObjects(ListObjectsRequest request,ListObjectsResponseHandler resultHandler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.listObjects(new ListObjectsRequest(bucketname, prefix), new ListObjectsResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders,
ObjectListing objectListing) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
}
);
上传Object数据
方法名:
public void PutObject(String bucketname, String objectkey, File file , PutObjectResponseHandler handler) throws Ks3ClientException, Ks3ServiceException;
参数说明:
回调参数:
代码示例:
client.PutObject(bucketname, objectkey, file, new PutObjectResponseHandler() {
@Override
public void onTaskSuccess(int statesCode, Header[] responceHeaders) {
}
@Override
public void onTaskFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
@Override
public void onTaskFinish(){
}
@Override
public void onTaskStart(){
}
@Override
public void onTaskProgress(double progress){
//运行在非UI线程,更新UI时需要注意
//Progress为0-100之间的double类型数值
}
}
);
上传Object数据
方法名:
public void PutObject(PutObjectRequest request, PutObjectResponseHandler handler) throws Ks3ClientException, Ks3ServiceException;
参数说明:
回调参数:
代码示例:
client.PutObject(new PutObjectRequest(bucketname, objectkey, file), new PutObjectResponseHandler() {
@Override
public void onTaskSuccess(int statesCode, Header[] responceHeaders) {
}
@Override
public void onTaskFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
@Override
public void onTaskFinish(){
}
@Override
public void onTaskStart(){
}
@Override
public void onTaskProgress(double progress){
//运行在非UI线程,更新UI时需要注意
//Progress为0-100之间的double类型数值
}
}
);
复制Object
方法名:
public void copyObject(String destinationBucket, String destinationObject,String sourceBucket, String sourceKey, CopyObjectResponseHandler resultHandler) throws Ks3ClientException,Ks3ServiceException {}
参数说明:
回调参数:
代码示例:
client.copyObject("ks3-sdk-test", "object-source", "eflake", "object-copy", new CopyObjectResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders,
CopyResult result) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
});
复制Object
方法名:
public void copyObject(String destinationBucket, String destinationObject,String sourceBucket, String sourceKey, CannedAccessControlList cannedAcl, CopyObjectResponseHandler resultHandler) throws Ks3ClientException,Ks3ServiceException {}
参数说明:
回调参数:
代码示例:
CannedAccessControlList cannedAcl = CannedAccessControlList.PublicRead;
client.copyObject("ks3-sdk-test", "object-source", "eflake", "object-copy",cannedAcl, new CopyObjectResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders,
CopyResult result) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
});
复制Object
方法名:
public void copyObject(String destinationBucket, String destinationObject,String sourceBucket, String sourceKey, AccessControlList accessControlList, CopyObjectResponseHandler resultHandler) throws Ks3ClientException,Ks3ServiceException {}
参数说明:
回调参数:
代码示例:
AccessControlList acList = new AccessControlList();
GranteeId grantee = new GranteeId();
grantee.setIdentifier("123456");
grantee.setDisplayName("TESTTEST1");
acList.addGrant(grantee, Permission.Read);
client.copyObject("ks3-sdk-test", "object-source", "eflake", "object-copy",acList, new CopyObjectResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders,
CopyResult result) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
});
复制Object
方法名:
public void copyObject(CopyObjectRequest request,CopyObjectResponseHandler resultHandler) throws Ks3ClientException,Ks3ServiceException {}
参数说明:
回调参数:
代码示例:
CopyObjectRequest request = new CopyObjectRequest(destinationBucket,
destinationObject, sourceBucket, sourceKey);
client.copyObject(request, new CopyObjectResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders,
CopyResult result) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable throwable) {
}
});
调用这个接口会初始化一个分块上传,KS3 Server会返回一个upload id, upload id 用来标识属于当前object的具体的块,并且用来标识完成分块上传或者取消分块上传
方法名:
public void initiateMultipartUpload(String bucketname, String objectkey, InitiateMultipartUploadResponceHandler resultHandler) throws Ks3ClientException, Ks3ServiceException;
参数说明:
回调参数:
代码示例:
client.initiateMultipartUpload(bucketName, objectKey,
new InitiateMultipartUploadResponceHandler() {
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable paramThrowable) {
}
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
InitiateMultipartUploadResult result) {
String uploadId = result.getUploadId();
});
调用这个接口会初始化一个分块上传,KS3 Server会返回一个upload id, upload id 用来标识属于当前object的具体的块,并且用来标识完成分块上传或者取消分块上传
方法名:
public void initiateMultipartUpload(InitiateMultipartUploadRequest request, InitiateMultipartUploadResponceHandler resultHandler) throws Ks3ClientException, Ks3ServiceException;
参数说明:
回调参数:
代码示例:
client.initiateMultipartUpload(new InitiateMultipartUploadRequest(
bucketName, objectKey),
new InitiateMultipartUploadResponceHandler() {
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable paramThrowable) {
}
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
InitiateMultipartUploadResult result) {
String uploadId = result.getUploadId();
});
初始化分块上传后,上传分块接口。Part number 是标识每个分块的数字,介于0-10000之间。除了最后一块,每个块必须大于等于5MB,最后一块没有这个限制。
方法名:
public void uploadPart(String bucketName, String key, String uploadId,File file, long offset, int partNumber, long partSize,UploadPartResponceHandler resultHandler)throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.uploadPart(bucketName, key,
uploadId, file, offset, partNumbe,partsize,new UploadPartResponceHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
PartETag result) {
Log.d("eflake","upload part success , partnumber = "+ result.getPartNumber()+ ",etag = "+ result.getETag());
}
@Override
public void onFailure(int statesCode,Header[] responceHeaders,
String response, Throwable throwable) {
Log.d("eflake","upload part failed ,responce = "
+ response);
}
}
);
初始化分块上传后,上传分块接口。Part number 是标识每个分块的数字,介于0-10000之间。除了最后一块,每个块必须大于等于5MB,最后一块没有大小限制。
方法名:
public void uploadPart(UploadPartRequest request,UploadPartResponceHandler resultHandler)throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.uploadPart(new UploadPartRequest(bucketName, key,
uploadId, file, offset, partNumber++, partsize),new UploadPartResponceHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
UploadPartResult result) {
Log.d("eflake","upload part success , partnumber = "+ result.getPartNumber()+ ",etag = "+ result.getETag());
}
@Override
public void onFailure(int statesCode,Header[] responceHeaders,
String response, Throwable throwable) {
Log.d("eflake","upload part failed ,responce = "
+ response);
}
}
);
罗列出已经上传的块
方法名:
public void ListParts(String bucketname, String objectkey, String uploadId,ListPartsResponseHandler handler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.ListParts(bucketName, objectKey, uploadId,
new ListPartsResponseHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
ListPartsResult listPartsResult) {
Log.d("eflake", "listPart success :"
+ listPartsResult.toString());
mLastListPartResul = listPartsResult;
int mLastSize = listPartsResult.getParts()
.size();
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable paramThrowable) {
Log.d("eflake",
"listPart fail ,reason :"
+ response);
}
});
罗列出已经上传的块
方法名:
public void ListParts(String bucketname, String objectkey, String uploadId, int maxParts, ListPartsResponseHandler handler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.ListParts(bucketName, objectKey,uploadId,maxParts,
new ListPartsResponseHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
ListPartsResult listPartsResult) {
Log.d("eflake", "listPart success :"
+ listPartsResult.toString());
mLastListPartResul = listPartsResult;
int mLastSize = listPartsResult.getParts()
.size();
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable paramThrowable) {
Log.d("eflake",
"listPart fail ,reason :"
+ response);
}
});
罗列出已经上传的块
方法名:
public void ListParts(String bucketname, String objectkey, String uploadId,int maxParts, int partNumberMarker, ListPartsResponseHandler handler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.ListParts(bucketName, objectKey,uploadId,maxParts,partNumberMarker,
new ListPartsResponseHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
ListPartsResult listPartsResult) {
Log.d("eflake", "listPart success :"
+ listPartsResult.toString());
mLastListPartResul = listPartsResult;
int mLastSize = listPartsResult.getParts()
.size();
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable paramThrowable) {
Log.d("eflake",
"listPart fail ,reason :"
+ response);
}
});
取消分块上传。
方法名:
public void abortMultipartUpload(String bucketname, String objectkey, String uploadId,AbortMultipartUploadResponseHandler handler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.abortMultipartUpload(bucketname, objectkey, uploadId, new AbortMultipartUploadResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable paramThrowable) {
}
});
取消分块上传。
方法名:
public void abortMultipartUpload(AbortMultipartUploadRequest request, AbortMultipartUploadResponseHandler handler) throws Ks3ClientException, Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.abortMultipartUpload(new AbortMultipartUploadRequest(bucketname, objectkey, uploadId), new AbortMultipartUploadResponseHandler() {
@Override
public void onSuccess(int statesCode, Header[] responceHeaders) {
}
@Override
public void onFailure(int statesCode, Header[] responceHeaders,
String response, Throwable paramThrowable) {
}
});
组装之前上传的块,然后完成分块上传。通过你提供的xml文件,进行分块组装。在xml文件中,块号必须使用升序排列。必须提供每个块的ETag值。
方法名:
public void completeMultipartUpload(String bucketname, String objectkey, String uploadId,
List
参数说明:
回调参数:
代码示例:
client.completeMultipartUpload(
new CompleteMultipartUploadRequest(
mLastListPartResul),
new CompleteMultipartUploadResponseHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
CompleteMultipartUploadResult result) {
Log.d("eflake",
"completeMultipartUpload success, result = "
+ result.getBucket());
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders,
String response,
Throwable paramThrowable) {
Log.d("eflake",
"completeMultipartUpload failed, reason = "
+ response);
}
});
组装之前上传的块,然后完成分块上传。通过你提供的xml文件,进行分块组装。在xml文件中,块号必须使用升序排列。必须提供每个块的ETag值。
方法名:
public void completeMultipartUpload(ListPartsResult result, CompleteMultipartUploadResponseHandler handler) throws Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.completeMultipartUpload(mLastListPartResul,
new CompleteMultipartUploadResponseHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
CompleteMultipartUploadResult result) {
Log.d("eflake",
"completeMultipartUpload success, result = "
+ result.getBucket());
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders,
String response,
Throwable paramThrowable) {
Log.d("eflake",
"completeMultipartUpload failed, reason = "
+ response);
}
});
组装之前上传的块,然后完成分块上传。通过你提供的xml文件,进行分块组装。在xml文件中,块号必须使用升序排列。必须提供每个块的ETag值。
方法名:
public void completeMultipartUpload(CompleteMultipartUploadRequest request, CompleteMultipartUploadResponseHandler handler) throws Ks3ClientException,Ks3ServiceException{}
参数说明:
回调参数:
代码示例:
client.completeMultipartUpload(
new CompleteMultipartUploadRequest(
mLastListPartResul),
new CompleteMultipartUploadResponseHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
CompleteMultipartUploadResult result) {
Log.d("eflake",
"completeMultipartUpload success, result = "
+ result.getBucket());
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders,
String response,
Throwable paramThrowable) {
Log.d("eflake",
"completeMultipartUpload failed, reason = "
+ response);
}
});
分块上传代码示例
handler = new UploadPartHandler();
client.initiateMultipartUpload(new InitiateMultipartUploadRequest(
bucketName, objectKey),
new InitiateMultipartUploadResponceHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
InitiateMultipartUploadResult result) {
String uploadId = result.getUploadId();
handler.sendEmptyMessage(TransferManager.STATE_UPLOAD_NEXT);
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable paramThrowable) {
}
}
);
public class UploadPartHandler extends Handler {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case TransferManager.STATE_UPLOAD_NEXT:
if (localUploadPartRequestFactory.hasMoreRequests()) {
UploadPartRequest uploadPartRequest = localUploadPartRequestFactory
.getNextUploadPartRequest();
client.uploadPart(uploadPartRequest,
new UploadPartResponceHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
UploadPartResult result) {
Log.d("eflake",
"upload part success , partnumber = "
+ result.getPartNumber()
+ ",etag = "
+ result.getETag());
handler.sendEmptyMessage(TransferManager.STATE_UPLOAD_NEXT);
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders,
String response, Throwable throwable) {
Log.d("eflake",
"upload part failed ,responce = "
+ response);
handler.sendEmptyMessage(TransferManager.STATE_UPLOAD_FAILED);
}
});
} else {
handler.sendEmptyMessage(TransferManager.STATE_UPLOAD_FINISH);
}
break;
case TransferManager.STATE_UPLOAD_FINISH:
client.ListParts(bucketName, objectKey,
transferResponceHandler.getMultipartUoloadId(),
new ListPartsResponseHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
ListPartsResult listPartsResult) {
mLastListPartResul = listPartsResult;
handler.sendEmptyMessage(TransferManager.STATE_UPLOAD_COMPLETE);
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders, String response,
Throwable paramThrowable) {
Log.d("eflake",
"listPart failed, reason :"
+ response);
}
});
break;
case TransferManager.STATE_UPLOAD_FAILED:
break;
case TransferManager.STATE_UPLOAD_COMPLETE:
if (mLastListPartResul != null) {
client.completeMultipartUpload(
new CompleteMultipartUploadRequest(
mLastListPartResul),
new CompleteMultipartUploadResponseHandler() {
@Override
public void onSuccess(int statesCode,
Header[] responceHeaders,
CompleteMultipartUploadResult result) {
Log.d("eflake",
"completeMultipartUpload success, result = "
+ result.getBucket());
}
@Override
public void onFailure(int statesCode,
Header[] responceHeaders,
String response,
Throwable paramThrowable) {
Log.d("eflake",
"completeMultipartUpload failed, reason = "
+ response);
}
});
}
break;
default:
break;
}
}
}
完整示例,请见 KS3-Android-SDK-Demo