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

Object Storage Service:ストリーミングダウンロード (Android SDK)

最終更新日:Nov 30, 2025

ラージオブジェクトをダウンロードする場合、またはダウンロードに長時間を要する場合は、ストリーミングダウンロードを実行してオブジェクトを増分的にダウンロードできます。

ストリーミングダウンロードを実行してオブジェクトをダウンロードし、オブジェクトの入力ストリームを取得できます。ストリーミングダウンロードを実行するには、オブジェクトに対する読み取り権限が必要です。

注意事項

  • このトピックのサンプルコードを実行する前に、カスタムドメイン名やセキュリティトークンサービス (STS) などの方法を使用して OSSClient インスタンスを作成する必要があります。詳細については、「初期化 (Android SDK)」をご参照ください。

同期呼び出し:

// オブジェクトをダウンロードするリクエストを作成します。
// バケット名 (例: examplebucket) とオブジェクトの完全なパス (例: exampledir/exampleobject.txt) を指定します。オブジェクトの完全なパスにバケット名を含めることはできません。
GetObjectRequest get = new GetObjectRequest("examplebucket", "exampledir/exampleobject.txt");

// ダウンロード進捗コールバックを設定します。
get.setProgressListener(new OSSProgressCallback<GetObjectRequest>() {
            @Override
            public void onProgress(GetObjectRequest request, long currentSize, long totalSize) {
                OSSLog.logDebug("getobj_progress: " + currentSize+"  total_size: " + totalSize, false);
            }
        });

try {
    // ダウンロードリクエストを同期的に実行し、結果を返します。
    GetObjectResult getResult = oss.getObject(get);

    Log.d("Content-Length", "" + getResult.getContentLength());

    // オブジェクトの入力ストリームを取得します。
    InputStream inputStream = getResult.getObjectContent();

    byte[] buffer = new byte[2048];
    int len;

    while ((len = inputStream.read(buffer)) != -1) {
        // ダウンロードしたデータを処理します (例: 画像の表示、ファイルへの書き込み)。
    }

    // ダウンロード後、オブジェクトのメタデータを表示できます。
    ObjectMetadata metadata = getResult.getMetadata();
    Log.d("ContentType", metadata.getContentType());


} catch (ClientException e) {
    // ネットワーク例外などのローカル例外を処理します。
    e.printStackTrace();
} catch (ServiceException e) {
    // サービス例外を処理します。
    Log.e("RequestId", e.getRequestId());
    Log.e("ErrorCode", e.getErrorCode());
    Log.e("HostId", e.getHostId());
    Log.e("RawMessage", e.getRawMessage());
} catch (IOException e) {
    e.printStackTrace();
}

非同期呼び出し:

// オブジェクトをダウンロードするリクエストを作成します。
// バケット名 (例: examplebucket) とオブジェクトの完全なパス (例: exampledir/exampleobject.txt) を指定します。
// オブジェクトの完全なパスにバケット名を含めることはできません。
GetObjectRequest get = new GetObjectRequest("examplebucket", "exampledir/exampleobject.txt");

// ダウンロード進捗コールバックを設定します。
get.setProgressListener(new OSSProgressCallback<GetObjectRequest>() {
            @Override
            public void onProgress(GetObjectRequest request, long currentSize, long totalSize) {
                OSSLog.logDebug("getobj_progress: " + currentSize+"  total_size: " + totalSize, false);
            }
        });
OSSAsyncTask task = oss.asyncGetObject(get, new OSSCompletedCallback<GetObjectRequest, GetObjectResult>() {
    @Override
    public void onSuccess(GetObjectRequest request, GetObjectResult result) {
        // リクエストは成功です。
        InputStream inputStream = result.getObjectContent();

        byte[] buffer = new byte[2048];
        int len;

        try {
            while ((len = inputStream.read(buffer)) != -1) {
                // ダウンロードしたデータを処理します。
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    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());
        }
    }
});

関連ドキュメント

  • ストリーミングダウンロードの完全なサンプルコードについては、GitHub をご参照ください。

  • ストリーミングダウンロードを実行するために呼び出すことができる API 操作の詳細については、「GetObject」をご参照ください。

  • OSSClient インスタンスを初期化する方法の詳細については、「初期化」をご参照ください。