存儲空間(Bucket)是用來存儲對象(Object)的容器。對象都隸屬于存儲空間。存儲空間按照字母順序排列。您可以列舉當前賬號所有地域下符合指定條件的存儲空間。
注意事項
使用本文示例前您需要先通過自定義域名、STS等方式新建OSSClient,具體請參見如何初始化Android端OSSClient實例。
列舉所有存儲空間
以下代碼用于列舉當前賬號所有地域下的存儲空間。
// 列舉當前賬號所有地域下的存儲空間。
ListBucketsRequest request = new ListBucketsRequest();
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
@Override
public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
List<OSSBucketSummary> buckets = result.getBuckets();
for (int i = 0; i < buckets.size(); i++) {
Log.i("info", "name: " + buckets.get(i).name + " "
+ "location: " + buckets.get(i).location);
}
}
@Override
public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
// 請求異常。
if (clientException != null) {
// 客戶端異常,例如網絡異常等。
clientException.printStackTrace();
}
if (serviceException != null) {
// 服務端異常。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
列舉指定前綴的存儲空間
以下代碼用于列舉當前賬號所有地域下以example為前綴(prefix)的存儲空間。
說明
前綴為模糊匹配,查詢結果為名稱是<輸入參數>+*的文件,如果輸入a 將返回所有以a為前綴的bucket,例如abucket,abcbucket。
// 填寫STS應用服務器地址,例如http://example.com。
String stsServer = "http://example.com";
// 推薦使用OSSAuthCredentialsProvider,確保token過期時自動更新。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);
ClientConfiguration config = new ClientConfiguration();
OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, config);
ListBucketsRequest request = new ListBucketsRequest();
// 列舉當前賬號所有地域下前綴為example的存儲空間。
request.setPrefix("example");
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
@Override
public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
List<OSSBucketSummary> buckets = result.getBuckets();
for (int i = 0; i < buckets.size(); i++) {
Log.i("i", "name: " + buckets.get(i).name + " "
+ "location: " + buckets.get(i).location);
}
}
@Override
public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
// 請求異常。
if (clientException != null) {
// 客戶端異常,例如網絡異常等。
clientException.printStackTrace();
}
if (serviceException != null) {
// 服務端異常。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
列舉指定marker之后的存儲空間
以下代碼用于列舉當前賬號所有地域下名稱的字母序排在examplebucket之后的存儲空間。
說明
前綴為模糊匹配,查詢結果為名稱是<輸入參數>+*的文件,如果輸入a 將返回所有以a為前綴的bucket,例如abucket,abcbucket。
查詢結果為模糊匹配所匹配到的第一個及之后的所有存儲空間。
// 填寫STS應用服務器地址,例如http://example.com。
String stsServer = "http://example.com";
// 推薦使用OSSAuthCredentialsProvider,確保token過期時自動更新。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);
ClientConfiguration config = new ClientConfiguration();
OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, config);
ListBucketsRequest request = new ListBucketsRequest();
// 列舉當前賬號所有地域下名稱的字母序排在examplebucket之后的存儲空間。
request.setMarker("examplebucket");
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
@Override
public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
List<OSSBucketSummary> buckets = result.getBuckets();
for (int i = 0; i < buckets.size(); i++) {
Log.i("i", "name: " + buckets.get(i).name + " "
+ "location: " + buckets.get(i).location);
}
}
@Override
public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
// 請求異常。
if (clientException != null) {
// 客戶端異常,例如網絡異常等。
clientException.printStackTrace();
}
if (serviceException != null) {
// 服務端異常。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
列舉指定個數的存儲空間
以下代碼用于列舉當前賬號所有地域下的存儲空間,并指定列舉的最大個數為500。
// 填寫STS應用服務器地址,例如http://example.com。
String stsServer = "http://example.com";
// 推薦使用OSSAuthCredentialsProvider,確保token過期時自動更新。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);
ClientConfiguration config = new ClientConfiguration();
OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, config);
ListBucketsRequest request = new ListBucketsRequest();
// 列舉當前賬號所有地域下的存儲空間,限定此次列舉存儲空間的最大個數為500。默認值為100,最大值為1000。
request.setMaxKeys(500);
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
@Override
public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
List<OSSBucketSummary> buckets = result.getBuckets();
for (int i = 0; i < buckets.size(); i++) {
Log.i("i", "name: " + buckets.get(i).name + " "
+ "location: " + buckets.get(i).location);
}
}
@Override
public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
// 請求異常。
if (clientException != null) {
// 客戶端異常,例如網絡異常等。
clientException.printStackTrace();
}
if (serviceException != null) {
// 服務端異常。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
相關文檔
關于列舉存儲空間的完整示例代碼,請參見GitHub示例。
關于列舉存儲空間的API接口說明,請參見ListBuckets(GetService)。
文檔內容是否對您有幫助?