Após o upload de um objeto, o Object Storage Service (OSS) pode enviar uma solicitação de callback para o servidor de aplicação. Para implementar um callback, basta enviar uma solicitação que contenha os parâmetros de callback relevantes para o OSS.
Observações
Especifique um callback de upload ao fazer o upload de um arquivo. Após um upload bem-sucedido, o OSS envia uma solicitação HTTP POST para o endereço de servidor especificado. Depois, execute operações com base no callback recebido.
A URL de callback não pode conter uma query string. Especifique a query string no parâmetro
:query.Se o upload do arquivo for bem-sucedido, mas o callback falhar, o cliente lança um
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 fazer o upload de um arquivo com put_object. Adicione as informações do bucket e do objeto referentes ao upload no corpo do callback. Um callback recebido pelo seu servidor de aplicação confirma que o arquivo foi enviado com sucesso para o 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 obter o código de exemplo completo de callbacks de upload, consulte o exemplo no GitHub.
Para obter mais informações sobre a operação da API para callbacks de upload, consulte Callback.