Todos os produtos
Search
Central de documentação

Object Storage Service:Configurar callbacks de upload para aplicativos móveis

Última atualização: Sep 25, 2026

Este tópico descreve como configurar um serviço de transferência direta de dados para aplicativos móveis usando Object Storage Service (OSS) e como configurar callbacks de upload.

Informações gerais

Set up direct data transfer for mobile applications descreve como configurar um serviço de transferência direta de dados para aplicativos móveis usando OSS. No entanto, essa solução apresenta uma limitação. Para aplicativos Android e iOS, é possível solicitar um token do Security Token Service (STS) uma única vez e usá-lo para enviar dados ao OSS várias vezes. Com isso, o servidor de aplicação não consegue determinar quais dados o usuário enviou, o que dificulta o gerenciamento dos dados pelo desenvolvedor. Para resolver esse problema, o OSS oferece o recurso de callback de upload.

Procedimento

O fluxo de desenvolvimento para um callback de upload é o seguinte:

image

Após o OSS receber os dados de um aplicativo Android ou iOS (Etapa 5 na figura) e antes de retornar o resultado do upload ao usuário (Etapa 7), o OSS aciona uma tarefa de callback de upload (Etapa 6). Durante o callback, o OSS envia uma requisição ao servidor de aplicação, aguarda a resposta e encaminha essa resposta ao aplicativo Android ou iOS. Para mais informações, consulte Callback.

Finalidade dos callbacks de upload

  • Os callbacks de upload informam ao servidor de aplicação as informações básicas de um arquivo enviado.

    Essas informações podem incluir uma ou mais das variáveis listadas na tabela a seguir. O formato do conteúdo retornado é definido pelo aplicativo Android ou iOS durante o upload.

    Variável do sistema

    Descrição

    bucket

    O bucket para o qual o aplicativo móvel faz upload do arquivo.

    object

    O nome do arquivo após ser enviado ao OSS pelo aplicativo móvel.

    etag

    O ETag do arquivo enviado. Corresponde ao campo etag retornado ao usuário.

    size

    O tamanho do arquivo enviado.

    mimeType

    O tipo de recurso.

    imageInfo.height

    A altura da imagem.

    imageInfo.width

    A largura da imagem.

    imageInfo.format

    O formato da imagem, como JPG ou PNG.

  • Os callbacks de upload permitem definir parâmetros personalizados para transmitir informações.

    Como desenvolvedor, talvez você queira conhecer a versão do aplicativo do usuário, a versão do sistema operacional, as informações de GPS e o modelo do telefone. Especifique os seguintes parâmetros personalizados quando um dispositivo Android ou iOS fizer upload de um arquivo:

    • x:version: especifica a versão do aplicativo.

    • x:system: especifica a versão do sistema operacional.

    • x:gps: especifica as informações de GPS.

    • x:phone: especifica o modelo do telefone.

    O aplicativo Android ou iOS inclui esses parâmetros ao fazer upload de um arquivo para o OSS. O OSS os adiciona ao CallbackBody e os envia ao servidor de aplicação, permitindo que o servidor receba as informações.

Requisitos para o servidor de aplicação

  • Implante um service capaz de receber requisições POST. Esse service deve ter um endereço de rede pública, como http://example.com/callback.php.

  • O service deve retornar uma resposta válida ao OSS. A resposta deve estar no formato json e pode conter conteúdo personalizado. O OSS encaminha essa resposta do servidor de aplicação ao aplicativo Android ou iOS. Para mais informações, consulte Callback.

Configure um callback de upload no aplicativo móvel

Para acionar um callback de upload quando o OSS receber uma requisição de upload, inclua o seguinte conteúdo ao construir a requisição de upload no aplicativo móvel:

  • A URL de callback (callbackUrl). Trata-se da URL do servidor para o qual a requisição de callback é enviada, como http://example.com/callback.php. Esse endereço deve ser acessível pela Internet.

  • O corpo da requisição de callback (callbackBody) enviado ao servidor de aplicação. O corpo pode incluir uma ou mais das variáveis do sistema fornecidas pelo OSS.

Suponha que a URL de callback de upload do seu servidor de aplicação seja http://example.com/callback.php. Você deseja obter o nome e o tamanho do arquivo enviado e defina a variável x:phone para o modelo do telefone e a variável x:system para a versão do sistema operacional.

A seguir estão dois exemplos de callbacks de upload:

  • Exemplo de configuração de callback de upload no iOS:

    OSSPutObjectRequest * request = [OSSPutObjectRequest new];
    request.bucketName = @"<bucketName>";
    request.objectKey = @"<objectKey>";
    request.uploadingFileURL = [NSURL fileURLWithPath:@"<filepath>"];
    // Set callback parameters.
    request.callbackParam = @{
                              @"callbackUrl": @"http://example.com/callback.php",
                              @"callbackBody": @"filename=${object}&size=${size}&phone=${x:phone}&system=${x:system}"
                              };
    // Set custom variables.
    request.callbackVar = @{
                            @"x:phone": @"iphone6s",
                            @"x:system": @"ios9.1"
                            };
  • Exemplo de configuração de callback de upload no Android:

    PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath);
    ObjectMetadata metadata = new ObjectMetadata();
    metadata.setContentType("application/octet-stream");
    put.setMetadata(metadata);
    put.setCallbackParam(new HashMap<String, String>() {
        {
            put("callbackUrl", "http://example.com/callback.php");
            put("callbackBody", "filename=${object}&size=${size}&phone=${x:phone}&system=${x:system}");
        }
    });
    put.setCallbackVars(new HashMap<String, String>() {
         {
             put("x:phone", "iPhone 6s");
             put("x:system", "YunOS5.0");
         }
    });

Requisição de callback recebida pelo servidor de aplicação

A requisição de callback recebida pelo servidor de aplicação varia conforme a URL e o corpo de callback configurados. O código a seguir apresenta um exemplo:

POST /index.html HTTP/1.0
Host: 203.0.113.0
Connection: close
Content-Length: 81
Content-Type: application/x-www-form-urlencoded
User-Agent: ehttp-client/0.0.1
authorization: kKQe**************/kdD1ktNVgbWE**************
x-oss-pub-key-url: aHR0**************
filename=test.txt&size=5&phone=iphone6s&system=ios9.1

Para mais informações, consulte the Callback API reference.

Verifique se a requisição de callback é proveniente do OSS

Se o seu servidor de callback for alvo de um ataque malicioso — como o recebimento de requisições de callback falsificadas que perturbam as operações normais — verifique se cada requisição de callback é proveniente do OSS.

Para isso, realize a validação RSA nos parâmetros x-oss-pub-key-url e authorization do cabeçalho que o OSS envia ao servidor de aplicação. Uma requisição é proveniente do OSS somente se passar pela validação RSA. Os programas de exemplo neste tópico ilustram essa implementação para referência.

Processar a requisição de callback

O servidor de aplicação verifique que a requisição é proveniente do OSS e especifique o formato de conteúdo para o callback, como

filename=test.txt&size=5&phone=iphone6s&system=ios9.1

O servidor de aplicação pode analisar o conteúdo retornado pelo OSS para obter os dados necessários. Após obtê-los, o servidor pode armazená-los para gerenciamento futuro.

Como o OSS processa a resposta do servidor de aplicação

Dois cenários podem ocorrer:

  • O OSS envia a requisição de callback ao servidor de aplicação, mas o servidor não consegue recebê-la ou está inacessível. Nesse caso, o OSS retorna o status code 203 ao aplicativo Android ou iOS. Os dados já estão armazenados no OSS.

  • O servidor de aplicação recebe a requisição de callback do OSS e retorna uma resposta válida. Nesse caso, o OSS retorna o status code 200 ao aplicativo Android ou iOS e encaminha a resposta do servidor de aplicação ao aplicativo.

Baixe programas de exemplo

Os programas de exemplo demonstram apenas como verifique a assinatura recebida pelo servidor de aplicação. Adicione seu próprio código para analisar o conteúdo do corpo do callback.

  • Java

    • URL de download.

    • Como executar: após descompactar o pacote, execute java -jar oss-callback-server-demo.jar 9000. Neste exemplo, 9000 é o número da porta, que pode ser alterado.

      Nota

      Este exemplo JAR foi testado no Java 1.7. Caso encontre problemas, pode ser necessário modifique o código. Trata-se de um projeto Maven.

  • PHP

    • URL de download.

    • Como executar: implante o pacote descompactado em um ambiente Apache. Devido às características do PHP, o método para recuperar alguns cabeçalhos depende do ambiente. Consulte o exemplo e adapte-o para o seu ambiente específico.

  • Python

    • URL de download.

    • Como executar: após descompactar o pacote, execute python callback_app_server.py. O programa implementa um servidor HTTP simples. Pode ser necessário instale a dependência RSA para executá-lo.

  • Ruby Version

Perguntas frequentes

É possível alterar a URL de callback para que outro servidor receba o callback e confirme o status do upload?

Não. Os parâmetros são assinados e verificados pelo lado do servidor do OSS. Qualquer conteúdo adulterado falhará na validação.