全部产品
Search
文档中心

Object Storage Service:Atur pengunggahan callback untuk aplikasi seluler

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menyiapkan layanan transfer data langsung berbasis Object Storage Service (OSS) untuk aplikasi seluler dan mengonfigurasi callback pengunggahan.

Informasi latar belakang

Siapkan Transfer Data Langsung untuk Aplikasi Seluler menjelaskan cara menyiapkan layanan transfer data langsung berbasis OSS untuk aplikasi seluler. Setelah layanan transfer langsung berbasis OSS disiapkan untuk aplikasi Android atau iOS, token Security Token Service (STS) diterbitkan kepada pengguna aplikasi ketika mereka mengirim permintaan unggah. Pengguna aplikasi dapat menggunakan token STS untuk mengunggah data ke OSS beberapa kali hingga token menjadi tidak valid. Akibatnya, server aplikasi tidak dapat mengidentifikasi data yang diunggah oleh pengguna aplikasi, sehingga mempersulit manajemen data bagi pengembang aplikasi. Untuk mengatasi masalah ini, OSS menyediakan fitur callback pengunggahan.

Prosedur

Gambar berikut menunjukkan cara kerja callback pengunggahan.

Setelah OSS menerima permintaan unggah dari aplikasi Android atau iOS (Langkah 5), OSS memicu tugas callback pengunggahan (Langkah 6) untuk mengirim permintaan callback ke server aplikasi. Kemudian, server aplikasi mengembalikan respons ke OSS, dan OSS mengirim hasil unggahan ke aplikasi Android atau iOS berdasarkan respons tersebut (Langkah 7). Untuk informasi lebih lanjut, lihat Callback.

Tujuan

  • Anda dapat menggunakan callback pengunggahan untuk mengirim informasi dasar tentang objek yang diunggah ke server aplikasi.

    Tabel berikut menjelaskan variabel yang dapat disertakan dalam informasi dasar yang dikembalikan. Format konten yang dikembalikan ditentukan saat objek diunggah menggunakan aplikasi Android atau iOS.

    Variabel sistem

    Deskripsi

    bucket

    Bucket tempat objek diunggah menggunakan aplikasi seluler.

    object

    Nama objek setelah objek diunggah ke OSS menggunakan aplikasi seluler.

    etag

    ETag objek yang diunggah, yaitu bidang ETag yang termasuk dalam hasil unggahan yang dikembalikan kepada pengguna aplikasi seluler.

    size

    Ukuran objek yang diunggah.

    mimeType

    Jenis data yang diunggah.

    imageInfo.height

    Tinggi gambar yang diunggah.

    imageInfo.width

    Lebar gambar yang diunggah.

    imageInfo.format

    Format gambar yang diunggah. Contoh: JPG dan PNG.

  • Anda dapat menggunakan callback pengunggahan untuk menentukan parameter callback kustom untuk server aplikasi guna mendapatkan informasi tentang klien aplikasi.

    Sebagai contoh, jika Anda adalah pengembang aplikasi dan ingin mendapatkan informasi tentang versi aplikasi, versi sistem operasi, koordinat GPS, dan model ponsel, Anda dapat menentukan parameter kustom berikut untuk aplikasi saat objek diunggah menggunakan aplikasi Android atau iOS:

    • x:version: versi aplikasi

    • x:system: versi sistem operasi

    • x:gps: koordinat GPS

    • x:phone: model ponsel

    Setelah Anda mengonfigurasi parameter sebelumnya, parameter ini dibawa ketika klien aplikasi Android atau iOS mengunggah objek ke OSS. Kemudian, OSS menyertakan parameter ini dalam callbackBody dan mengirim callbackBody ke server aplikasi. Dengan cara ini, server aplikasi menerima informasi tentang klien aplikasi.

Persyaratan pada server aplikasi untuk callback pengunggahan

  • Layanan yang menerima permintaan POST telah diterapkan. Layanan ini harus memiliki alamat IP publik. Contoh: http://example.com/callback.php.

  • Layanan ini harus merespons OSS dengan benar, dan respons harus dalam format JSON. Anda dapat menentukan respons kustom. OSS mengembalikan respons dari server aplikasi ke aplikasi Android atau iOS. Untuk informasi lebih lanjut, lihat Callback.

Konfigurasikan permintaan callback pengunggahan di sisi aplikasi seluler

Untuk memicu callback pengunggahan saat OSS menerima permintaan unggah, Anda harus membuat permintaan unggahan di aplikasi seluler untuk menyertakan konten berikut dalam permintaan unggahan:

  • callbackUrl: URL server aplikasi ke mana permintaan callback dikirim, seperti http://example.com/callback.php. URL ini harus dapat diakses melalui Internet.

  • callbackBody: variabel sistem sebelumnya yang dikembalikan oleh OSS ke server aplikasi. Anda dapat menentukan satu atau lebih variabel yang dikembalikan dalam callbackBody.

Sebagai contoh, jika Anda adalah pengembang aplikasi, dan URL server aplikasi adalah http://example.com/callback.php, Anda ingin mendapatkan nama objek dan ukuran serta menentukan x:phone sebagai model ponsel dan x:system sebagai versi sistem operasi.

Berikut ini menjelaskan dua jenis permintaan untuk callback pengunggahan:

  • Contoh permintaan callback pengunggahan pada aplikasi iOS:

    OSSPutObjectRequest * request = [OSSPutObjectRequest new];
    request.bucketName = @"<bucketName>";
    request.objectKey = @"<objectKey>";
    request.uploadingFileURL = [NSURL fileURLWithPath:@"<filepath>"];
    // Konfigurasikan parameter callback.
    request.callbackParam = @{
                              @"callbackUrl": @"http://example.com/callback.php",
                              @"callbackBody": @"filename=${object}&size=${size}&phone=${x:phone}&system=${x:system}"
                              };
    // Tentukan variabel.
    request.callbackVar = @{
                            @"x:phone": @"iphone6s",
                            @"x:system": @"ios9.1"
                            };
  • Contoh permintaan callback pengunggahan pada aplikasi Android:

    PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath);
    ObjectMetadata metadata = new ObjectMetadata();
    metadata.setContentType("application/octet-stream");
    put.setMetadata(metadata);
    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}");
        }
    });
    put.setCallbackVars(new HashMap<String, String>() {
         {
             put("x:phone", "iPhone 6s");
             put("x:system", "YunOS5.0");
         }
    });

Contoh permintaan callback pengunggahan yang diterima oleh server aplikasi

Permintaan callback pengunggahan yang diterima oleh server aplikasi bervariasi berdasarkan konfigurasi sebelumnya dari callbackUrl dan callbackBody. Contoh:

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

Untuk informasi lebih lanjut, lihat Callback.

Server aplikasi menentukan apakah permintaan callback pengunggahan dikirim dari OSS

Jika server aplikasi Anda diserang dan menerima permintaan tidak valid, server aplikasi perlu menentukan apakah permintaan callback dikirim dari OSS.

Untuk menentukan apakah permintaan callback dikirim dari OSS, server aplikasi melakukan verifikasi tanda tangan RSA pada header respons x-oss-pub-key-url dan authorization yang dikirim oleh OSS. Hanya permintaan callback yang lolos verifikasi tanda tangan RSA yang dikirim dari OSS. Program sampel yang disediakan dalam topik ini mencakup header untuk verifikasi tanda tangan RSA sebagai referensi Anda.

Server aplikasi memproses permintaan callback

Setelah server aplikasi menentukan bahwa permintaan callback dikirim dari OSS, format permintaan callback ke server aplikasi ditentukan. Contoh:

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

Server aplikasi dapat menguraikan konten yang dikirim oleh OSS untuk mendapatkan data yang diinginkan. Setelah data diperoleh, server aplikasi dapat menyimpan data untuk manajemen selanjutnya.

OSS memproses respons dari server aplikasi

Salah satu skenario berikut mungkin terjadi:

  • OSS mengirim permintaan callback ke server aplikasi. Server aplikasi gagal menerima permintaan atau tidak dapat diakses. Dalam hal ini, OSS mengirim kode status HTTP 203 ke aplikasi Android atau iOS. Namun, data telah disimpan di OSS.

  • Server aplikasi menerima permintaan callback dari OSS dan merespons OSS dengan benar. Dalam hal ini, OSS mengembalikan kode status HTTP 200 dan respons dari server aplikasi ke aplikasi Android atau iOS.

Unduh program sampel

Program sampel hanya memeriksa tanda tangan yang diterima oleh server aplikasi. Anda harus menambahkan kode secara manual yang dieksekusi untuk menguraikan format permintaan callback yang diterima oleh server aplikasi.

  • Java

    • URL Unduhan: Klik di sini.

    • Untuk menjalankan program sampel, ekstrak paket yang diunduh dan jalankan java -jar oss-callback-server-demo.jar 9000. 9000 adalah port default. Anda dapat mengubah nomor port.

      Catatan

      Contoh paket JAR berjalan pada OSS SDK for Java 1.7. Jika terjadi kesalahan, modifikasi kode berdasarkan kode sampel. Paket ini berisi kode untuk proyek Maven.

  • PHP

    • URL Unduhan: Klik di sini.

    • Untuk menjalankan program sampel, ekstrak paket yang diunduh ke lingkungan Apache. Lingkungan spesifik ini diperlukan untuk mendapatkan beberapa header karena fitur PHP tertentu. Modifikasi kode sampel berdasarkan lingkungan aktual.

  • Python

    • URL Unduhan: Klik di sini.

    • Untuk menjalankan program sampel, ekstrak paket yang diunduh dan jalankan python callback_app_server.py. Program ini berfungsi sebagai server HTTP sederhana. Untuk menjalankan program ini, Anda mungkin perlu menginstal dependensi untuk RSA.

  • Ruby

    • URL Unduhan: Klik di sini.

    • Untuk menjalankan program sampel, jalankan perintah ruby server.rb.

FAQ

Dapatkah saya mengubah URL callback dan menggunakan server lain untuk menerima callback dan memeriksa apakah pengunggahan berhasil?

Anda tidak dapat mengubah URL callback karena parameter ditandatangani dan diverifikasi oleh server OSS, dan konten yang dirusak tidak dapat melewati verifikasi.