Append upload menambahkan konten ke objek yang dapat ditambahkan (appendable object) yang sudah ada dengan menggunakan metode AppendObject.
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 |
| Anda dapat memanggil operasi ini untuk mengunggah objek dengan menambahkannya ke objek yang sudah ada. |
| 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
Untuk kode contoh lengkap mengenai append upload, lihat contoh di GitHub.
Untuk informasi mengenai operasi API untuk append upload, lihat AppendObject.
Untuk informasi mengenai cara menginisialisasi OSSClient, lihat Inisialisasi instans OSSClient untuk Android.