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

Object Storage Service:追加アップロード

最終更新日:Mar 05, 2024

AppendObject操作を呼び出して、既存の追加可能オブジェクトにコンテンツを追加できます。

説明

AppendObject操作を呼び出してアップロードされたオブジェクトは追加可能なオブジェクトです。 PutObject操作を呼び出してアップロードされたオブジェクトは通常のオブジェクトです。

使用上の注意

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

追加アップロードを実行してオブジェクトをアップロードする場合、追加操作の開始位置を適切に設定する必要があります。

  • 追加可能なオブジェクトを作成するときは、追加操作の開始位置を0に設定します。

  • 追加可能なオブジェクトにコンテンツを追加する場合は、追加操作の開始位置をオブジェクトの現在の長さに設定します。

    追加アップロード後、またはHeadObjectを呼び出して、返されたメッセージからオブジェクトの長さを取得できます。

次のサンプルコードは、追加アップロードの実行方法の例を示しています。

b /バケットの名前、オブジェクトのフルパス、およびローカルファイルのフルパスを指定します。 この例では、バケットの名前はexamplebucket、オブジェクトのフルパスはexampledir/exampleobject.txt、ローカルファイルのフルパスは /storage/emulated/0/oss/examplefile.txtです。 
// オブジェクトのフルパスにバケット名を含めないでください。 
AppendObjectRequest append = new AppendObjectRequest("examplebucket", "exampledir/exampleobject.txt", "/storage/emulated/0/oss/examplefile.txt");

ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("text/plain");
append.setMetadata (メタデータ);

// 追加操作の開始位置を指定します。 
append.setPosition(0);

// コールバックを設定します。 
append.setProgressCallback(new OSSProgressCallback<AppendObjectRequest>() {
    @オーバーライド
    public void onProgress(AppendObjectRequest request, long currentSize, long totalSize) {
        Log.d("AppendObject", "currentSize: " + currentSize + "totalSize: " + totalSize);
    }
});
// 非同期モードで追加アップロード操作を実行します。 
OSSAsyncTask task = oss.asyncAppendObject(append, new OSSCompletedCallback<AppendObjectRequest, AppendObjectResult>() {
    @オーバーライド
    public void onSuccess(AppendObjectRequestリクエスト, AppendObjectResult結果) {
        Log.d("AppendObject", "AppendSuccess");
        Log.d("NextPosition", "+ result.getNextPosition());
    }

    @オーバーライド
    public void onFailure(AppendObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // Handle exceptions. 
    }
});

次のサンプルコードは、ファイルのURIを使用して、Android 10以降のパーティションストレージのためにファイルをOSSにアップロードする方法の例を示しています。

// バケットの名前とオブジェクトの完全パスを指定します。 この例では、バケットの名前はexamplebucketで、オブジェクトの完全パスはexampledir/exampleobject.txtです。 
// オブジェクトのフルパスにバケット名を含めないでください。 
AppendObjectRequest append = new AppendObjectRequest("examplebucket", "exampledir/exampleobject.txt", fileUri);

ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("text/plain");
append.setMetadata (メタデータ);

// 追加操作の開始位置を指定します。 
append.setPosition(0);

// コールバックを設定します。 
append.setProgressCallback(new OSSProgressCallback<AppendObjectRequest>() {
    @オーバーライド
    public void onProgress(AppendObjectRequest request, long currentSize, long totalSize) {
        Log.d("AppendObject", "currentSize: " + currentSize + "totalSize: " + totalSize);
    }
});
// 非同期モードで追加アップロード操作を実行します。 
OSSAsyncTask task = oss.asyncAppendObject(append, new OSSCompletedCallback<AppendObjectRequest, AppendObjectResult>() {
    @オーバーライド
    public void onSuccess(AppendObjectRequestリクエスト, AppendObjectResult結果) {
        Log.d("AppendObject", "AppendSuccess");
        Log.d("NextPosition", "+ result.getNextPosition());
    }

    @オーバーライド
    public void onFailure(AppendObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // Handle exceptions. 
    }
});

参考資料

  • 追加アップロードの実行に使用される完全なサンプルコードについては、『GitHub』をご参照ください。

  • 追加アップロードを実行するために呼び出すことができるAPI操作の詳細については、「AppendObject」をご参照ください。

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