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.