オブジェクトがアップロードされた後、object Storage Service (OSS) はアプリケーションサーバーにコールバックを送信できます。 アップロードコールバックを設定するには、必要なコールバックパラメーターをOSSに送信されるアップロードリクエストに追加するだけです。 このトピックでは、アップロードコールバックを設定する方法について説明します。
説明
単純なアップロードと比較して、コールバックが構成されたオブジェクトのアップロードでは、クライアントが要求を処理して応答を返すのをより長い期間待つ必要があります。
オブジェクトのアップロードとアップロードコールバックは非同期に実行され、アップロードコールバックが実行される前にローカルファイルがOSSにアップロードされます。 したがって、アップロードコールバックが返されなかった場合でも、ローカルファイルはアップロードされます。
使用上の注意
このトピックのサンプルコードを実行する前に、カスタムドメイン名やSecurity Token Service (STS) などの方法を使用してOSSClientインスタンスを作成する必要があります。 詳細については、「初期化」をご参照ください。
例
次のサンプルコードは、アップロードコールバックを設定する方法の例を示しています。
// アップロード要求を作成します。
// バケットの名前、オブジェクトのフルパス、およびローカルファイルのフルパスを指定します。 この例では、バケットの名前は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>() {
@オーバーライド
public void onSuccess(PutObjectRequestリクエスト, PutObjectResult結果) {
Log.d("PutObject", "UploadSuccess");
// 返されたコールバック情報を取得します。 リクエストにservercallbackを指定した場合にのみ、コールバック情報を取得できます。
文字列serverCallbackReturnJson = result.getServerCallbackReturnBody();
Log.d("servercallback", serverCallbackReturnJson);
}
@オーバーライド
public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// Handle exceptions.
}
});
次のサンプルコードは、カスタムパラメーターを設定する方法の例を示しています。
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");
}
});