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インスタンスを初期化する方法の詳細については、「初期化」をご参照ください。