Todos os produtos
Search
Central de documentação

Object Storage Service:Upload callbacks (Ruby SDK)

Última atualização: Jul 03, 2026

Após o upload de um objeto, o Object Storage Service (OSS) pode enviar uma solicitação de callback ao servidor da aplicação. Para implementar um callback, basta enviar uma solicitação com os parâmetros relevantes ao OSS.

Observações

  • Especifique um callback de upload ao enviar um arquivo. Após a conclusão bem-sucedida do upload, o OSS envia uma solicitação HTTP POST para o endereço do servidor definido. Em seguida, execute operações com base no callback recebido.

  • A URL de callback não pode conter uma query string. Defina a query string no parâmetro :query.

  • Se o upload do arquivo for bem-sucedido, mas o callback falhar, o cliente lançará uma exceção CallbackError. Para ignorar esse erro, trate a exceção explicitamente.

  • Para obter mais informações sobre o servidor que aceita o callback, consulte callback_server.rb.

Código de exemplo

Os callbacks de upload são suportados apenas para uploads de arquivos que utilizam put_object e resumable_upload.

Especifique um callback de upload ao usar put_object

Especifique um callback de upload ao enviar um arquivo com put_object. Adicione as informações do bucket e do objeto ao corpo do callback. O recebimento desse callback pelo servidor da aplicação confirma que o arquivo foi enviado com sucesso ao OSS.

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # The China (Hangzhou) region is used as an example for the endpoint. Specify the endpoint based on your region.
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
    # Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Specify the bucket name, for example, examplebucket.
bucket = client.get_bucket('examplebucket')

callback = Aliyun::OSS::Callback.new(
  url: 'http://oss-demo.aliyuncs.com:23450',
  query: {user: 'put_object'},
  body: 'bucket=${bucket}&object=${object}'
)

begin
  bucket.put_object('files/hello', file: '/tmp/x', callback: callback)
rescue Aliyun::OSS::CallbackError => e
  puts "Callback failed: #{e.message}"
end

Especifique um callback de upload ao usar resumable_upload

O procedimento para resumable_upload é semelhante ao do put_object.

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # The China (Hangzhou) region is used as an example for the endpoint. Specify the endpoint based on your region.
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
    # Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Specify the bucket name, for example, examplebucket.
bucket = client.get_bucket('examplebucket')

callback = Aliyun::OSS::Callback.new(
  url: 'http://oss-demo.aliyuncs.com:23450',
  query: {user: 'put_object'},
  body: 'bucket=${bucket}&object=${object}'
)

begin
  bucket.resumable_upload('files/hello', '/tmp/x', callback: callback)
rescue Aliyun::OSS::CallbackError => e
  puts "Callback failed: #{e.message}"
end

Referências

  • Para acessar o código completo de exemplo sobre callbacks de upload, consulte o exemplo no GitHub.

  • Para mais detalhes sobre a operação de API relacionada aos callbacks de upload, consulte Callback.