オブジェクトがアップロードされた後、Object Storage Service (OSS) はアプリケーションサーバーにコールバックを送信できます。 アップロードコールバックを設定するには、OSS に送信されるアップロードリクエストに必要なコールバックパラメーターを追加するだけです。 このトピックでは、アップロードコールバックの設定方法について説明します。
説明
通常のアップロードと比較して、コールバックを設定したオブジェクトのアップロードでは、クライアントがリクエストを処理して応答を返すまでにより長い時間待機する必要があります。
オブジェクトのアップロードとアップロードコールバックは非同期で実行されます。アップロードコールバックが実行される前に、ローカルファイルが OSS にアップロードされます。 したがって、アップロードコールバックの返信に失敗した場合でも、ローカルファイルはアップロードされます。
注意事項
このトピックのサンプルコードを実行する前に、カスタムドメイン名の使用や Security Token Service (STS) などの方法で OSSClient インスタンスを作成する必要があります。 詳細については、「初期化 (Android SDK)」をご参照ください。
サンプルコード
次のサンプルコードは、アップロードコールバックを設定する方法の例です。
// アップロードリクエストを作成します。
// バケット名、オブジェクトの完全なパス、およびローカルファイルの完全なパスを指定します。 例:examplebucket、exampledir/exampleobject.txt、/storage/emulated/0/oss/examplefile.txt。
// オブジェクトの完全なパスにバケット名を含めることはできません。
PutObjectRequest put = new PutObjectRequest("examplebucket", "exampledir/exampleobject.txt", "/storage/emulated/0/oss/examplefile.txt");
put.setCallbackParam(new HashMap<String, String>() {
{
put("callbackUrl", "http://oss-demo.aliyuncs.com:23450");
put("callbackHost", "yourCallbackHost");
put("callbackBodyType", "application/json");
put("callbackBody", "{\"mimeType\":${mimeType},\"size\":${size}}");
}
});
OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
@Override
public void onSuccess(PutObjectRequest request, PutObjectResult result) {
Log.d("PutObject", "UploadSuccess");
// この値には、servercallback が設定されている場合にのみデータが含まれます。
String serverCallbackReturnJson = result.getServerCallbackReturnBody();
Log.d("servercallback", serverCallbackReturnJson);
}
@Override
public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// 例外を処理します。
}
});
次のサンプルコードは、カスタムパラメーターを設定する方法の例です。
put.setCallbackParam(new HashMap<String, String>() {
{
put("callbackUrl", "http://oss-demo.aliyuncs.com:23450");
put("callbackHost", "yourCallbackHost");
put("callbackBodyType", "application/json");
put("callbackBody", "{\"object\":${object},\"size\":${size},\"my_var1\":${x:var1},\"my_var2\":${x:var2}}");
}
});
put.setCallbackVars(new HashMap<String, String>() {
{
put("x:var1", "value1");
put("x:var2", "value2");
}
});