全部产品
Search
文档中心

Object Storage Service:Append upload (Android SDK)

更新时间:Nov 30, 2025

Append upload menambahkan konten ke objek yang dapat ditambahkan (appendable object) yang sudah ada dengan menggunakan metode AppendObject.

Catatan

Objek yang diunggah menggunakan operasi AppendObject adalah objek yang dapat ditambahkan. Objek yang diunggah menggunakan operasi PutObject adalah objek biasa.

Catatan penggunaan

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

Saat mengunggah objek dengan menambahkan data, Anda harus mengatur parameter posisi secara tepat.

  • Saat membuat objek yang dapat ditambahkan, atur parameter posisi ke 0.

  • Saat menambahkan konten ke objek yang dapat ditambahkan, atur parameter posisi ke panjang saat ini dari objek tersebut.

    Anda dapat memperoleh panjang objek dari respons append upload sebelumnya atau dengan menggunakan operasi HeadObject.

Izin

Secara default, Akun Alibaba Cloud memiliki izin penuh. Pengguna RAM atau Peran RAM di bawah Akun Alibaba Cloud tidak memiliki izin apa pun secara default. Akun Alibaba Cloud atau administrator akun harus memberikan izin operasi melalui RAM Policy atau Bucket policies.

API

Action

Definisi

AppendObject

oss:PutObject

Anda dapat memanggil operasi ini untuk mengunggah objek dengan menambahkannya ke objek yang sudah ada.

oss:PutObjectTagging

Saat mengunggah objek dengan menambahkannya ke objek yang sudah ada, jika Anda menentukan tag objek melalui x-oss-tagging, izin ini diperlukan.

Contoh kode

Kode berikut menunjukkan cara menambahkan data ke objek.

// Tentukan nama bucket, path lengkap objek, dan path lengkap file lokal. Contoh: examplebucket, exampledir/exampleobject.txt, dan /storage/emulated/0/oss/examplefile.txt.
// Path lengkap objek tidak boleh mengandung nama bucket.
AppendObjectRequest append = new AppendObjectRequest("examplebucket", "exampledir/exampleobject.txt", "/storage/emulated/0/oss/examplefile.txt");

ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("text/plain");
append.setMetadata(metadata);

// Atur posisi penambahan.
append.setPosition(0);

// Atur callback.
append.setProgressCallback(new OSSProgressCallback<AppendObjectRequest>() {
    @Override
    public void onProgress(AppendObjectRequest request, long currentSize, long totalSize) {
        Log.d("AppendObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
    }
});
// Tambahkan data secara asinkron.
OSSAsyncTask task = oss.asyncAppendObject(append, new OSSCompletedCallback<AppendObjectRequest, AppendObjectResult>() {
    @Override
    public void onSuccess(AppendObjectRequest request, AppendObjectResult result) {
        Log.d("AppendObject", "AppendSuccess");
        Log.d("NextPosition", "" + result.getNextPosition());
    }

    @Override
    public void onFailure(AppendObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // Tangani exception.
    }
});

Untuk scoped storage di Android 10 dan versi yang lebih baru, Anda dapat menggunakan URI file untuk mengunggah file ke OSS.

// Tentukan nama bucket dan path lengkap objek. Contoh: examplebucket dan exampledir/exampleobject.txt.
// Path lengkap objek tidak boleh mengandung nama bucket.
AppendObjectRequest append = new AppendObjectRequest("examplebucket", "exampledir/exampleobject.txt", fileUri);

ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("text/plain");
append.setMetadata(metadata);

// Atur posisi penambahan.
append.setPosition(0);

// Atur callback.
append.setProgressCallback(new OSSProgressCallback<AppendObjectRequest>() {
    @Override
    public void onProgress(AppendObjectRequest request, long currentSize, long totalSize) {
        Log.d("AppendObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
    }
});
// Tambahkan data secara asinkron.
OSSAsyncTask task = oss.asyncAppendObject(append, new OSSCompletedCallback<AppendObjectRequest, AppendObjectResult>() {
    @Override
    public void onSuccess(AppendObjectRequest request, AppendObjectResult result) {
        Log.d("AppendObject", "AppendSuccess");
        Log.d("NextPosition", "" + result.getNextPosition());
    }

    @Override
    public void onFailure(AppendObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // Tangani exception.
    }
});

Referensi