Após o upload de um objeto, o Object Storage Service (OSS) pode enviar um callback para o servidor de aplicativos. Para configurar callbacks de upload, adicione os parâmetros de callback necessários à solicitação de upload enviada ao OSS. Este tópico descreve como configurar callbacks de upload.
Em comparação com o upload simples, o upload de objetos com callback configurado exige que o cliente aguarde mais tempo para processar a solicitação e retornar uma resposta.
O upload do objeto e o callback de upload são executados de forma assíncrona. O arquivo local é enviado ao OSS antes da execução do callback de upload. Portanto, o arquivo local é carregado mesmo que o retorno do callback de upload falhe.
Observações de uso
Antes de executar o código de exemplo deste tópico, crie uma instância OSSClient usando métodos como nome de domínio personalizado ou Security Token Service (STS). Para obter mais informações, consulte Inicialização (Android SDK).
Exemplos
O código de exemplo a seguir mostra como configurar um callback de upload:
// Create an upload request.
// Specify the bucket name, the full path of the object, and the full path of the local file. For example, examplebucket, exampledir/exampleobject.txt, and /storage/emulated/0/oss/examplefile.txt.
// The full path of the object cannot contain the bucket name.
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");
// This value contains data only if servercallback is set.
String serverCallbackReturnJson = result.getServerCallbackReturnBody();
Log.d("servercallback", serverCallbackReturnJson);
}
@Override
public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// Handle exceptions.
}
});
O exemplo a seguir ilustra a configuração de parâmetros personalizados:
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");
}
});
Referências
Para acessar o código de exemplo completo sobre configuração de callbacks de upload, visite o GitHub.
Para obter detalhes sobre a operação de API usada na configuração de callbacks de upload, consulte Callback.
Saiba mais sobre como inicializar uma instância OSSClient em Inicialização.