Setelah objek diunggah, Object Storage Service (OSS) dapat mengirim permintaan callback ke server aplikasi. Untuk mengimplementasikan callback, cukup kirim permintaan yang berisi parameter callback terkait ke OSS.
Catatan
Anda dapat menentukan upload callback saat mengunggah file. Setelah unggahan berhasil, OSS akan mengirim permintaan HTTP POST ke alamat server yang Anda tentukan, sehingga Anda dapat melakukan operasi berdasarkan callback yang diterima.
URL callback tidak boleh berisi query string. Query string harus ditentukan dalam parameter
:query.Jika file berhasil diunggah tetapi callback gagal, klien akan melemparkan
CallbackError. Jika ingin mengabaikan error ini, Anda harus secara eksplisit menangani exception tersebut.Untuk informasi lebih lanjut tentang server yang menerima callback, lihat callback_server.rb.
Kode contoh
Upload callback hanya didukung untuk unggahan file yang menggunakan put_object dan resumable_upload.
Tentukan upload callback saat menggunakan put_object
Tentukan upload callback saat mengunggah file menggunakan put_object. Tambahkan informasi bucket dan objek untuk unggahan tersebut ke dalam body callback. Callback yang diterima oleh server aplikasi Anda mengonfirmasi bahwa file telah berhasil diunggah ke OSS.
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# Wilayah China (Hangzhou) digunakan sebagai contoh untuk endpoint. Tentukan endpoint sesuai dengan wilayah Anda.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Tentukan nama bucket, misalnya 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}"
endTentukan upload callback saat menggunakan resumable_upload
Prosedur untuk resumable_upload mirip dengan put_object.
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# Wilayah China (Hangzhou) digunakan sebagai contoh untuk endpoint. Tentukan endpoint sesuai dengan wilayah Anda.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Tentukan nama bucket, misalnya 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}"
endReferensi
Untuk kode contoh lengkap mengenai upload callback, lihat contoh GitHub.
Untuk informasi lebih lanjut mengenai operasi API untuk upload callback, lihat Callback.