すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:OSS SDK for Androidの使用を開始する

最終更新日:Feb 22, 2024

このトピックでは、Object Storage Service (OSS) SDK for Androidを使用して、バケットの作成、オブジェクトのアップロード、オブジェクトのダウンロードなどの日常的な操作を実行する方法について説明します。

前提条件

OSS SDK for Androidがインストールされています。 詳細については、「インストール」をご参照ください。

サンプルプロジェクト

次の方法を使用して、サンプルプロジェクトを試すことができます。

  • ローカルファイルのアップロード、オブジェクトのダウンロード、再開可能なアップロードの実行、コールバックの設定のコード例を含むサンプルディレクトリを表示します。 詳細については、『GitHub』をご参照ください。

  • git cloneコマンドを実行して、プロジェクトを複製します。

プロジェクトを実行する前に、Configクラスを設定する必要があります。 次のサンプルコードは、Configクラスの設定方法の例を示しています。

public class Config {    

    // この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
    public static final String OSS_ENDPOINT = "https://oss-cn-hangzhou.aliyuncs.com";
    // コールバックURLを指定します。 
    public static final String OSS_CALLBACK_URL = "https://oss-demo.aliyuncs.com:23450";
    // Security Token Service (STS) 認証サーバーのURLを指定します。 
    // プロジェクトのsts_local_serverディレクトリでローカル認証スクリプトを実行して、ローカルSTS認証サーバーを起動することもできます。 
    public static final String STS_SERVER_URL = "http:// ****/sts/getsts";
    
    public static final String BUCKET_NAME = "yourBucketName";
    public static final String OSS_ACCESS_KEY_ID = "yourAccessKeyId";;
    public static final String OSS_ACCESS_KEY_SECRET = "yourAccessKeySecret";

    public static final int DOWNLOAD_SUC = 1;
    public static final int DOWNLOAD_Fail = 2;
    public static final int UPLOAD_SUC = 3;
    public static final int UPLOAD_Fail = 4;
    public static final int UPLOAD_PROGRESS = 5;
    パブリックスタティックfinal int LIST_SUC = 6;
    public static final int HEAD_SUC = 7;
    public static final int RESUMABLE_SUC = 8;
    public static final int SIGN_SUC = 9;
    public static final int BUCKET_SUC = 10;
    public static final int GET_STS_SUC = 11;
    public static final int MULTIPART_SUC = 12;
    public static final int STS_TOKEN_SUC = 13;
    public static final int FAIL = 9999;
    public static final int REQUESTCODE_AUTH = 10111;
    public static final int REQUESTCODE_LOCALPHOTOS = 10112;
} 

バケットを作成する

バケットは OSS のグローバルネームスペースです。 バケットは、オブジェクトを格納するために使用されるコンテナです。 次のサンプルコードは、バケットの作成方法の例を示しています。

// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
String endpoint = "yourEndpoint";
// STSから取得した一時的なAccessKeyペアを指定します。 
文字列accessKeyId = "yourAccessKeyId";
文字列accessKeySecret = "yourAccessKeySecret";
// STSから取得したセキュリティトークンを指定します。 
文字列securityToken = "yourSecurityToken";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId、accessKeySecret、securityToken);
// OSSClientインスタンスを作成します。 
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);

// バケットの名前を指定します。 
CreateBucketRequest createBucketRequest=新しいCreateBucketRequest("bucketName");
// バケットのアクセス制御リスト (ACL) をpublic-readに設定します。 デフォルトのバケットACLはprivateです。 
createBucketRequest.setBucketACL(CannedAccessControlList.PublicRead);
// バケットが配置されているリージョンを指定します。 
createBucketRequest.setLocationConstraint("oss-cn-hangzhou");
OSSAsyncTask createTask = oss.asyncCreateBucket(createBucketRequest, new OSSCompletedCallback<CreateBucketRequest, CreateBucketResult>() {
    @オーバーライド
    public void onSuccess(CreateBucketRequestリクエスト、CreateBucketResult結果) {
        Log.d("locationConstraint", request.getLocationConstraint());
        }
    @オーバーライド
    public void onFailure(CreateBucketRequest 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());
        }
    }
});

オブジェクトのアップロード

次のサンプルコードは、ローカルファイルをOSSにアップロードする方法の例を示しています。

// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
String endpoint = "yourEndpoint";
// STSから取得した一時的なAccessKeyペアを指定します。 
文字列accessKeyId = "yourAccessKeyId";
文字列accessKeySecret = "yourAccessKeySecret";
// STSから取得したセキュリティトークンを指定します。 
文字列securityToken = "yourSecurityToken";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId、accessKeySecret、securityToken);
// OSSClientインスタンスを作成します。 
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);

// ファイルのアップロード要求を作成します。 
PutObjectRequest put = new PutObjectRequest("<bucketName>", "<objectName>", "<uploadFilePath>");

// ローカルファイルを非同期モードでアップロードするときは、プログレスコールバックを設定できます。 
put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {
    @オーバーライド
    public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {
        Log.d("PutObject", "currentSize: " + currentSize + "totalSize: " + totalSize);
    }
});

OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
    @オーバーライド
    public void onSuccess(PutObjectRequestリクエスト, PutObjectResult結果) {
        Log.d("PutObject", "UploadSuccess");
        Log.d("ETag", result.getETag());
        Log.d("RequestId", result.getRequestId());
    }

    @オーバーライド
    public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // リクエスト例外を処理します。 
        if (clientExcepion != null) {
            // ネットワーク例外などのクライアント例外を処理します。 
            clientExcepion.printStackTrace();
        }
        if (serviceException != null) {
            // サービス例外を処理します。 
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});
// task.ca ncel(); // ダウンロードタスクをキャンセルできます。 
// task.waitUntilFinished(); // アップロードが完了するまで待ちます。

オブジェクトのダウンロード

次のサンプルコードは、オブジェクトをローカルデバイスにダウンロードする方法の例を示しています。

// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
String endpoint = "yourEndpoint";
// STSから取得した一時的なAccessKeyペアを指定します。 
文字列accessKeyId = "yourAccessKeyId";
文字列accessKeySecret = "yourAccessKeySecret";
// STSから取得したセキュリティトークンを指定します。 
文字列securityToken = "yourSecurityToken";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId、accessKeySecret、securityToken);
// OSSClientインスタンスを作成します。 
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
// オブジェクトをダウンロードするリクエストを作成します。 
GetObjectRequest get = new GetObjectRequest("<bucketName>", "<objectName>");

OSSAsyncTask task = oss.asyncGetObject(get, new OSSCompletedCallback<GetObjectRequest, GetObjectResult>() {
    @オーバーライド
    public void onSuccess(GetObjectRequest request, GetObjectResult result) {
        // リクエストが成功しました。 
        Log.d("asyncGetObject" 、"DownloadSuccess");
        Log.d("Content-Length", "+ result.getContentLength());

        InputStream inputStream = result.getObjectContent();
        byte[] buffer = new byte[2048];
        int len;

        try {
            while ((len = inputStream.read(buffer)) ! = -1) {
                // ここに独自のコードを追加して、ダウンロードしたデータを処理できます。 
            }
        } catch(IOException e){
            e.printStackTrace();
        }
    }

    @オーバーライド
    // GetObjectリクエストが成功した場合、GetObjectResultが返されます。 GetObjectResultは、入力ストリームのインスタンスを含む。 返された入力ストリームを処理する必要があります。 
    public void onFailure(GetObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // リクエスト例外を処理します。 
        if (clientExcepion != null) {
            // ネットワーク例外などのクライアント例外を処理します。 
            clientExcepion.printStackTrace();
        }
        if (serviceException != null) {
            // サービス例外を処理します。 
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});
// ダウンロードタスクをキャンセルします。 
// task.ca ncel();
// オブジェクトがダウンロードされるまで待ちます。 
// task.waitUntilFinished();