All Products
Search
Document Center

Object Storage Service:Unduhan streaming (Android SDK)

Last Updated:Nov 30, 2025

Untuk mengunduh objek besar atau ketika proses pengunduhan memerlukan waktu lama hingga selesai, Anda dapat menggunakan unduhan streaming guna mengunduh objek secara bertahap.

Anda dapat mengunduh objek melalui unduhan streaming dan memperoleh input stream-nya. Untuk melakukan unduhan streaming, Anda harus memiliki izin baca pada objek tersebut.

Catatan penggunaan

  • Sebelum menjalankan kode contoh dalam topik ini, Anda harus membuat instans OSSClient dengan metode seperti menggunakan nama domain kustom atau Security Token Service (STS). Untuk informasi selengkapnya, lihat Initialization (Android SDK).

Contoh

Panggilan sinkron:

// Buat permintaan untuk mengunduh objek.
// Tentukan nama bucket, misalnya examplebucket, dan path lengkap objek, misalnya exampledir/exampleobject.txt. Path lengkap objek tidak boleh berisi nama bucket.
GetObjectRequest get = new GetObjectRequest("examplebucket", "exampledir/exampleobject.txt");

// Atur callback progres pengunduhan.
get.setProgressListener(new OSSProgressCallback<GetObjectRequest>() {
            @Override
            public void onProgress(GetObjectRequest request, long currentSize, long totalSize) {
                OSSLog.logDebug("getobj_progress: " + currentSize+"  total_size: " + totalSize, false);
            }
        });

try {
    // Jalankan permintaan pengunduhan secara sinkron dan kembalikan hasilnya.
    GetObjectResult getResult = oss.getObject(get);

    Log.d("Content-Length", "" + getResult.getContentLength());

    // Dapatkan input stream objek.
    InputStream inputStream = getResult.getObjectContent();

    byte[] buffer = new byte[2048];
    int len;

    while ((len = inputStream.read(buffer)) != -1) {
        // Proses data yang diunduh, seperti menampilkan citra atau menulis data ke file.
    }

    // Setelah pengunduhan selesai, Anda dapat melihat metadata objek.
    ObjectMetadata metadata = getResult.getMetadata();
    Log.d("ContentType", metadata.getContentType());


} catch (ClientException e) {
    // Tangani exception lokal, seperti exception jaringan.
    e.printStackTrace();
} catch (ServiceException e) {
    // Tangani exception layanan.
    Log.e("RequestId", e.getRequestId());
    Log.e("ErrorCode", e.getErrorCode());
    Log.e("HostId", e.getHostId());
    Log.e("RawMessage", e.getRawMessage());
} catch (IOException e) {
    e.printStackTrace();
}

Pemanggilan asinkron:

// Buat permintaan untuk mengunduh objek.
// Tentukan nama bucket, misalnya examplebucket, dan path lengkap objek, misalnya exampledir/exampleobject.txt.
// Path lengkap objek tidak boleh berisi nama bucket.
GetObjectRequest get = new GetObjectRequest("examplebucket", "exampledir/exampleobject.txt");

// Atur callback progres pengunduhan.
get.setProgressListener(new OSSProgressCallback<GetObjectRequest>() {
            @Override
            public void onProgress(GetObjectRequest request, long currentSize, long totalSize) {
                OSSLog.logDebug("getobj_progress: " + currentSize+"  total_size: " + totalSize, false);
            }
        });
OSSAsyncTask task = oss.asyncGetObject(get, new OSSCompletedCallback<GetObjectRequest, GetObjectResult>() {
    @Override
    public void onSuccess(GetObjectRequest request, GetObjectResult result) {
        // Permintaan berhasil.
        InputStream inputStream = result.getObjectContent();

        byte[] buffer = new byte[2048];
        int len;

        try {
            while ((len = inputStream.read(buffer)) != -1) {
                // Proses data yang diunduh.
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onFailure(GetObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // Tangani exception permintaan.
        if (clientExcepion != null) {
            // Tangani exception lokal, seperti exception jaringan.
            clientExcepion.printStackTrace();
        }
        if (serviceException != null) {
            // Tangani exception layanan.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

Referensi

  • Untuk kode contoh lengkap mengenai unduhan streaming, kunjungi GitHub.

  • Untuk informasi selengkapnya mengenai Operasi API yang dapat Anda panggil untuk melakukan unduhan streaming, lihat GetObject.

  • Untuk informasi selengkapnya mengenai cara menginisialisasi instans OSSClient, lihat Initialization.