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

Object Storage Service:OSS SDK for Androidを使用した再開可能なダウンロード

最終更新日:Feb 23, 2024

クライアントがネットワークを介してリソースをダウンロードすると、ネットワークの変動などの理由でダウンロードが中断されます。 この場合、再開可能なダウンロードを実行して、未完成部品のダウンロードを続行できます。 この方法は時間とトラフィックを節約します。

使用上の注意

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

次のサンプルコードは、再開可能ダウンロードの実行方法の例を示しています。

// バケットの名前を指定します。 例: examplebucket. 
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。 
String objectKey = "exampledir/exampleobject.txt";
// ダウンロードしたオブジェクトのフルパスを指定します。 
文字列localFile = "/storage/emulated/0/oss/examplefile.txt";
ResumableDownloadRequestリクエスト=新しいResumableDownloadRequest(bucketName, objectKey, localFile);
// パーツサイズを指定します。 (単位:KB) 部品のデフォルトサイズは256 KBです。 特別な要件がない場合は、デフォルト値を使用できます。 
request.setPartSize(256*1024);
// 再開可能ダウンロードを開始します。 
request.setEnableCheckPoint(true);
// チェックポイントファイルのフルパスを指定します。 オブジェクトのダウンロードが中断されたためにチェックポイントファイルが生成された後、オブジェクトのダウンロードを続行する場合にのみ、チェックポイントファイルのフルパスを指定する必要があります。 
request.setCheckPointFilePath("/storage/emulated/0/oss");
request.setProgressListener(new OSSProgressCallback() {
    @オーバーライド
    public void onProgress (オブジェクトリクエスト, long currentSize, long totalSize) {
        Log.d("ResumableDownload" 、"currentSize: " + currentSize + "totalSize: " + totalSize);
    }
});
OSSAsyncTask task = oss.asyncResumableDownload(request, new OSSCompletedCallback<ResumableDownloadRequest, ResumableDownloadResult>() {
    @オーバーライド
    public void onSuccess(ResumableDownloadRequestリクエスト、ResumableDownloadResult結果) {
        Log.d("ResumableDownload" 、"DownloadSuccess");
    }

    @オーバーライド
    public void onFailure(ResumableDownloadRequestリクエスト, 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操作の詳細については、「GetObject」をご参照ください。

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