Después de cargar un objeto, Object Storage Service (OSS) puede enviar una solicitud de callback al servidor de aplicaciones. Para implementar un callback, solo necesita enviar a OSS una solicitud que contenga los parámetros de callback correspondientes.
Notas
Al cargar un archivo, especifique un callback de carga. Una vez que la carga finaliza correctamente, OSS envía una solicitud HTTP POST a la dirección del servidor que haya indicado. A partir de ahí, ejecute las operaciones necesarias según el callback recibido.
La URL del callback no admite cadenas de consulta. Especifique la cadena de consulta en el parámetro
:query.Si el archivo se carga correctamente pero el callback falla, el cliente genera un error
CallbackError. Para ignorar este error, gestione la excepción de manera explícita.Para obtener más información sobre el servidor que recibe el callback, consulte callback_server.rb.
Código de ejemplo
Los callbacks de carga solo son compatibles con las cargas de archivos que utilizan put_object y resumable_upload.
Especificar un callback de carga al usar put_object
Especifique un callback de carga cuando cargue un archivo mediante put_object. Agregue la información del bucket y del objeto de la carga al cuerpo del callback. Cuando el servidor de aplicaciones recibe el callback, confirma que el archivo se cargó correctamente en 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
Especificar un callback de carga al usar resumable_upload
El procedimiento para resumable_upload es similar al de 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
Referencias
Para consultar el código de ejemplo completo de los callbacks de carga, revise el ejemplo de GitHub.
Para obtener más información sobre la operación de API de los callbacks de carga, consulte Callback.