Une fois un objet chargé, Object Storage Service (OSS) peut envoyer une requête de callback au serveur d'application. Pour mettre en œuvre un callback, envoyez simplement à OSS une requête contenant les paramètres de callback pertinents.
Notes
Spécifiez un callback de chargement lors du transfert d'un fichier. Une fois le chargement réussi, OSS envoie une requête HTTP POST à l'adresse de serveur indiquée. Traitez ensuite les opérations selon le callback reçu.
L'URL de callback ne doit pas contenir de chaîne de requête. Spécifiez cette dernière dans le paramètre
:query.Si le fichier est chargé avec succès mais que le callback échoue, le client génère une erreur
CallbackError. Pour ignorer cette erreur, gérez explicitement l'exception.Pour plus d'informations sur le serveur qui accepte le callback, consultez callback_server.rb.
Exemple de code
Les callbacks de chargement sont pris en charge uniquement pour les transferts de fichiers utilisant put_object et resumable_upload.
Spécifier un callback de chargement lors de l'utilisation de put_object
Spécifiez un callback de chargement lorsque vous transférez un fichier à l'aide de put_object. Ajoutez les informations relatives au bucket et à l'objet au corps du callback. La réception du callback par votre serveur d'application confirme que le fichier a bien été chargé vers 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
Spécifier un callback de chargement lors de l'utilisation de resumable_upload
La procédure pour resumable_upload est similaire à celle 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
Références
Pour obtenir l'exemple de code complet relatif aux callbacks de chargement, consultez GitHub example.
Pour plus d'informations sur l'opération API relative aux callbacks de chargement, consultez Callback.