All Products
Search
Document Center

Object Storage Service:Menyiapkan callback unggahan untuk aplikasi seluler

Last Updated:Mar 20, 2026

Fitur callback unggahan memungkinkan server aplikasi Anda menerima permintaan POST dari OSS setiap kali klien seluler mengunggah objek. Dengan demikian, server Anda memperoleh visibilitas penuh terhadap setiap unggahan—termasuk identitas pengunggah, konten yang diunggah, dan perangkat asal—sehingga Anda dapat melacak, memproses, atau menyimpan data tersebut tanpa perlu melakukan polling ke OSS.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Menyelesaikan Menyiapkan transfer data langsung untuk aplikasi seluler — aplikasi Android atau iOS Anda harus sudah mengunggah langsung ke OSS menggunakan token Security Token Service (STS).

  • Memiliki server aplikasi dengan alamat IP publik yang dapat menerima permintaan POST.

  • Memiliki URL callback yang dapat diakses publik (misalnya, http://example.com/callback.php).

Kasus penggunaan

Callback unggahan berguna ketika server Anda perlu merespons unggahan secara langsung:

  • Pelacakan konten yang dibuat pengguna: Mencatat pengguna yang mengunggah foto profil, dokumen, atau video, beserta nama file, ukuran, dan tipe MIME-nya.

  • Pengumpulan metadata perangkat: Menangkap versi aplikasi, versi sistem operasi, koordinat GPS, atau model perangkat bersamaan dengan setiap unggahan—tanpa memerlukan panggilan API terpisah dari klien.

  • Pemrosesan pasca-unggahan: Mememicu alur kerja lanjutan (pembaruan database, pemrosesan gambar, notifikasi) segera setelah unggahan tiba di OSS.

Cara kerja

Upload callback flow

Alur ini melibatkan tiga pihak: aplikasi seluler, OSS, dan server aplikasi Anda.

  1. Langkah 1–4 (tidak ditampilkan secara rinci): Aplikasi seluler melakukan autentikasi dengan server aplikasi Anda dan mendapatkan token STS.

  2. Langkah 5: Aplikasi Android atau iOS mengirim permintaan unggahan ke OSS. Permintaan tersebut mencakup callbackUrl dan callbackBody, yang memberi tahu OSS ke mana mengirim callback dan data apa yang harus disertakan.

  3. Langkah 6: Setelah menerima objek, OSS mengirim permintaan callback POST ke server aplikasi Anda di callbackUrl.

  4. Langkah 7: Server aplikasi Anda memproses permintaan tersebut dan mengembalikan respons JSON. OSS meneruskan respons tersebut ke aplikasi seluler sebagai hasil unggahan.

Penting

Jika server aplikasi Anda gagal menerima permintaan callback atau tidak dapat diakses, OSS mengembalikan HTTP 203 ke aplikasi seluler. Objek tetap disimpan di OSS terlepas dari hal tersebut.

Untuk detail spesifikasi callback lengkap, lihat Callback.

Variabel sistem

Saat OSS mengirim permintaan callback ke server aplikasi Anda, callbackBody dapat mencakup kombinasi variabel sistem berikut. Anda menentukan variabel mana saja yang akan disertakan saat mengonfigurasi permintaan unggahan di aplikasi seluler.

VariabelDeskripsi
bucketBucket tempat objek diunggah
objectNama objek (key) setelah diunggah
etagETag dari objek yang diunggah
sizeUkuran objek yang diunggah
mimeTypeTipe MIME dari data yang diunggah
imageInfo.heightTinggi gambar yang diunggah
imageInfo.widthLebar gambar yang diunggah
imageInfo.formatFormat gambar yang diunggah (misalnya, JPG atau PNG)

Mengonfigurasi callback unggahan di aplikasi seluler

Untuk memicu callback, sertakan callbackUrl dan callbackBody dalam setiap permintaan unggahan. Anda juga dapat mengirimkan variabel kustom—dengan awalan x:—untuk mengirim metadata sisi klien ke server Anda.

Parameter yang harus disertakan dalam setiap permintaan unggahan:

ParameterDeskripsiContoh
callbackUrlURL server aplikasi Anda yang menerima callback. Harus dapat diakses melalui Internet.http://example.com/callback.php
callbackBodyVariabel sistem (dan variabel kustom) yang disertakan OSS dalam badan permintaan callback.filename=${object}&size=${size}&phone=${x:phone}

Penamaan variabel kustom: Variabel kustom harus diawali dengan x: (misalnya, x:phone, x:system, x:gps, x:version). OSS meneruskan variabel ini ke server Anda dalam callbackBody.

iOS

OSSPutObjectRequest *request = [OSSPutObjectRequest new];
request.bucketName = @"<bucketName>";
request.objectKey  = @"<objectKey>";
request.uploadingFileURL = [NSURL fileURLWithPath:@"<filepath>"];

// Set the callback URL and the fields to send to your server.
request.callbackParam = @{
    @"callbackUrl":  @"http://example.com/callback.php",
    @"callbackBody": @"filename=${object}&size=${size}&phone=${x:phone}&system=${x:system}"
};

// Set custom variable values.
request.callbackVar = @{
    @"x:phone":  @"iphone6s",
    @"x:system": @"ios9.1"
};

Android

PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath);

ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("application/octet-stream");
put.setMetadata(metadata);

// Set the callback URL and the fields to send to your server.
put.setCallbackParam(new HashMap<String, String>() {{
    put("callbackUrl",  "http://example.com/callback.php");
    put("callbackBody", "filename=${object}&size=${size}&phone=${x:phone}&system=${x:system}");
}});

// Set custom variable values.
put.setCallbackVars(new HashMap<String, String>() {{
    put("x:phone",  "iPhone 6s");
    put("x:system", "YunOS5.0");
}});

Persyaratan server aplikasi

Server aplikasi Anda harus:

  • Menerima permintaan POST di titik akhir callbackUrl.

  • Memiliki alamat IP publik agar OSS dapat mengaksesnya. Contoh: http://example.com/callback.php.

  • Mengembalikan respons JSON. OSS meneruskan respons ini langsung ke aplikasi seluler sebagai hasil unggahan. Anda dapat menyertakan bidang apa pun dalam badan JSON.

Verifikasi bahwa callback berasal dari OSS

Jika server Anda menghadap ke Internet, server tersebut mungkin menerima permintaan dari sumber selain OSS. Untuk memastikan bahwa callback tersebut asli, lakukan verifikasi tanda tangan RSA pada header x-oss-pub-key-url dan authorization dalam permintaan POST yang masuk. Hanya permintaan yang lolos verifikasi tanda tangan RSA yang berasal dari OSS.

Program contoh pada bagian berikutnya mencakup logika verifikasi RSA ini—gunakan sebagai referensi.

Contoh permintaan callback yang diterima server Anda (berdasarkan konfigurasi iOS dan Android di atas):

POST /index.html HTTP/1.0
Host: 203.0.113.0
Connection: close
Content-Length: 81
Content-Type: application/x-www-form-urlencoded
User-Agent: ehttp-client/0.0.1
authorization: kKQe**************/kdD1ktNVgbWE**************
x-oss-pub-key-url: aHR0**************

filename=test.txt&size=5&phone=iphone6s&system=ios9.1

Setelah server Anda memverifikasi tanda tangan dan mengurai badan permintaan, server tersebut dapat menyimpan data yang diekstraksi (nama file, ukuran, model ponsel, versi sistem operasi) untuk manajemen berkelanjutan.

Cara OSS menangani respons server

SkenarioPerilaku OSS
Server aplikasi gagal menerima permintaan atau tidak dapat diaksesOSS mengembalikan HTTP 203 ke aplikasi seluler. Objek tetap disimpan di OSS terlepas dari hal tersebut.
Server aplikasi mengembalikan respons JSONOSS mengembalikan HTTP 200 dan badan respons JSON ke aplikasi seluler.

Unduh program contoh

Program contoh berikut mengimplementasikan verifikasi tanda tangan RSA untuk server callback. Setiap program memvalidasi tanda tangan callback yang masuk tetapi tidak mengurai callbackBody—tambahkan logika penguraian tersebut sesuai dengan bidang yang Anda konfigurasikan dalam callbackBody.

  • Java

    • Unduh: AppCallbackServer.zip

    • Jalankan: java -jar oss-callback-server-demo.jar 9000 (9000 adalah port default; Anda dapat mengubah nomor port sesuai kebutuhan)

    • > Catatan: File JAR memerlukan OSS SDK untuk Java 1.7. Jika terjadi error, rujuk kode sumber proyek Maven yang disertakan dan modifikasi sesuai kebutuhan.

  • PHP

    • Unduh: callback-php-demo.zip

    • Jalankan: Deploy ke lingkungan Apache. Lingkungan Apache diperlukan untuk mendapatkan header tertentu karena fitur khusus PHP—modifikasi kode contoh sesuai dengan lingkungan aktual Anda.

  • Python

    • Unduh: callback_app_server.py.zip

    • Jalankan: python callback_app_server.py — ini akan menjalankan server HTTP minimal. Instal dependensi RSA jika diminta.

  • Ruby

FAQ

Dapatkah saya mengubah URL callback setelah permintaan unggahan ditandatangani?

Tidak. Parameter callback disertakan dalam permintaan unggahan yang telah ditandatangani dan diverifikasi oleh OSS. Mengubah callbackUrl atau parameter callback lainnya setelah penandatanganan menyebabkan verifikasi gagal—permintaan yang dimodifikasi tersebut akan ditolak.