Layanan Penyimpanan Objek (OSS) memungkinkan Anda mengonfigurasi tag objek untuk mengklasifikasikan objek. Topik ini menjelaskan cara menambahkan, mengkueri, dan menghapus tag objek.
Catatan penggunaan
Sebelum menjalankan kode contoh dalam topik ini, Anda harus membuat instans OSSClient dengan menggunakan metode seperti nama domain kustom atau Security Token Service (STS). Untuk informasi selengkapnya, lihat Inisialisasi (Android SDK).
Konfigurasikan penandaan objek
Tambahkan tag ke objek saat mengunggah objek
Jika objek yang memiliki nama sama dengan objek yang ingin Anda unggah sudah ada di path yang ditentukan, objek tersebut akan ditimpa oleh objek yang diunggah. Jika Anda tidak ingin menimpa objek yang ada, Anda dapat mengonfigurasi parameter tertentu. Untuk informasi selengkapnya, lihat Cegah objek ditimpa oleh objek dengan nama yang sama.
Kode contoh berikut menunjukkan cara menambahkan tag ke objek saat mengunggah objek:
// Buat permintaan unggah.
// Tentukan nama bucket, path lengkap objek, dan path lengkap file lokal. Contohnya: examplebucket, exampledir/exampleobject.txt, dan /storage/emulated/0/oss/examplefile.txt.
// Path lengkap objek tidak boleh mengandung nama bucket.
PutObjectRequest put = new PutObjectRequest("examplebucket", "exampledir/exampleobject.txt", "/storage/emulated/0/oss/examplefile.txt");
Map<String, String> tags = new HashMap<String, String>();
// Atur informasi tag.
tags.put("key1", "value1");
tags.put("Key2", "value2");
String tagHeader = OSSUtils.paramToQueryString(tags, "UTF-8");
ObjectMetadata metadata = new ObjectMetadata();
metadata.setHeader("x-oss-tagging", tagHeader);
put.setMetadata(metadata);
// Tetapkan callback untuk melacak progres unggah asinkron.
put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {
@Override
public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {
Log.d("PutObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
}
});
OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
@Override
public void onSuccess(PutObjectRequest request, PutObjectResult result) {
Log.d("PutObject", "UploadSuccess");
Log.d("ETag", result.getETag());
Log.d("RequestId", result.getRequestId());
}
@Override
public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// Pengecualian permintaan.
if (clientExcepion != null) {
// Pengecualian client, seperti pengecualian jaringan.
clientExcepion.printStackTrace();
}
if (serviceException != null) {
// Pengecualian server.
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});Tambahkan tag ke atau ubah tag objek yang sudah ada
Kode contoh berikut menunjukkan cara menambahkan atau mengubah tag objek yang sudah ada:
// Tentukan nama bucket. Contohnya: examplebucket.
String bucketName = "examplebucket";
// Tentukan path lengkap objek. Contohnya: exampledir/exampleobject.txt. Path lengkap objek tidak boleh mengandung nama bucket.
String objectName = "exampledir/exampleobject.txt";
Map<String, String> tags = new HashMap<String, String>();
// Atur informasi tag.
tags.put("owner", "John");
tags.put("type", "document");
PutObjectTaggingRequest putObjectTaggingRequest = new PutObjectTaggingRequest(bucketName, objectName, tags);
oss.asyncPutObjectTagging(putObjectTaggingRequest, new OSSCompletedCallback<PutObjectTaggingRequest, PutObjectTaggingResult>() {
@Override
public void onSuccess(PutObjectTaggingRequest request, PutObjectTaggingResult result) {
Log.d("PutTagging", "PutTaggingSuccess");
}
@Override
public void onFailure(PutObjectTaggingRequest request, ClientException clientException, ServiceException serviceException) {
// Pengecualian permintaan.
if (clientException != null) {
// Pengecualian client, seperti pengecualian jaringan.
clientException.printStackTrace();
}
if (serviceException != null) {
// Pengecualian server.
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});Tambahkan tag ke objek saat menyalin objek
Kode contoh berikut menunjukkan cara menambahkan tag ke objek saat menyalin objek:
// Buat permintaan CopyObject.
// Tentukan nama bucket sumber, path lengkap objek sumber, nama bucket tujuan, dan path lengkap objek tujuan. Contohnya: examplebucket, exampledir/exampleobject.txt, destexamplebucket, dan destexampledir/exampleobject.txt.
// Path lengkap objek tidak boleh mengandung nama bucket.
CopyObjectRequest copyObjectRequest = new CopyObjectRequest("examplebucket", "exampledir/exampleobject.txt",
"destexamplebucket", "destexampledir/exampleobject.txt");
ObjectMetadata objectMetadata = new ObjectMetadata();
Map<String, String> tags = new HashMap<String, String>();
// Atur tag untuk objek tujuan.
tags.put("key1", "value1");
tags.put("key2", "value2");
String tagHeader = OSSUtils.paramToQueryString(tags, "UTF-8");
objectMetadata.setHeader("x-oss-tagging", tagHeader);
// Abaikan tag objek sumber dan gunakan tag yang ditentukan dalam permintaan.
objectMetadata.setHeader("x-oss-tagging-directive", "REPLACE");
copyObjectRequest.setNewObjectMetadata(objectMetadata);
OSSAsyncTask copyTask = oss.asyncCopyObject(copyObjectRequest, new OSSCompletedCallback<CopyObjectRequest, CopyObjectResult>() {
@Override
public void onSuccess(CopyObjectRequest request, CopyObjectResult result) {
Log.d("copyObject", "copy success!");
}
@Override
public void onFailure(CopyObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// Pengecualian permintaan.
if (clientExcepion != null) {
// Pengecualian client, seperti pengecualian jaringan.
clientExcepion.printStackTrace();
}
if (serviceException != null) {
// Pengecualian layanan.
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});Tambahkan tag ke tautan simbolik
Kode contoh berikut menunjukkan cara menambahkan tag ke tautan simbolik:
PutSymlinkRequest putSymlink = new PutSymlinkRequest();
// Tentukan nama bucket. Contohnya: examplebucket.
putSymlink.setBucketName("examplebucket");
// Atur nama tautan simbolik.
putSymlink.setObjectKey("yourSymLink");
// Atur nama file objek.
putSymlink.setTargetObjectName("yourTargetObjectName");
Map<String, String> tags = new HashMap<String, String>();
// Atur informasi tag.
tags.put("key1", "value1");
tags.put("key2", "value2");
String tagHeader = OSSUtils.paramToQueryString(tags, "UTF-8");
ObjectMetadata metadata = new ObjectMetadata();
metadata.setHeader("x-oss-tagging", tagHeader);
putSymlink.setMetadata(metadata);
OSSAsyncTask task = oss.asyncPutSymlink(putSymlink, new OSSCompletedCallback<PutSymlinkRequest,
PutSymlinkResult>() {
@Override
public void onSuccess(PutSymlinkRequest request, PutSymlinkResult result) {
OSSLog.logInfo("code:"+result.getStatusCode());
}
@Override
public void onFailure(PutSymlinkRequest request, ClientException clientException,
ServiceException serviceException) {
OSSLog.logError("error: "+serviceException.getRawMessage());
}
});Kueri tag objek
Kode contoh berikut menunjukkan cara mengkueri tag objek:
// Tentukan nama bucket. Contohnya: examplebucket.
String bucketName = "examplebucket";
// Tentukan path lengkap objek. Contohnya: exampledir/exampleobject.txt. Path lengkap objek tidak boleh mengandung nama bucket.
String objectName = "exampledir/exampleobject.txt";
// Dapatkan tag objek.
GetObjectTaggingRequest getObjectTaggingRequest = new GetObjectTaggingRequest(bucketName, objectName);
oss.asyncGetObjectTagging(getObjectTaggingRequest, new OSSCompletedCallback<GetObjectTaggingRequest, GetObjectTaggingResult>() {
@Override
public void onSuccess(GetObjectTaggingRequest request, GetObjectTaggingResult result) {
for (Map.Entry<String, String> s : result.getTags().entrySet()) {
Log.d("tag", "key: " + s.getKey() + ", value: " + s.getValue());
}
}
@Override
public void onFailure(GetObjectTaggingRequest request, ClientException clientException, ServiceException serviceException) {
// Pengecualian permintaan.
if (clientException != null) {
// Pengecualian client, seperti pengecualian jaringan.
clientException.printStackTrace();
}
if (serviceException != null) {
// Pengecualian server.
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});Hapus tag objek
Kode contoh berikut menunjukkan cara menghapus tag objek:
// Tentukan nama bucket. Contohnya: examplebucket.
String bucketName = "examplebucket";
// Tentukan path lengkap objek. Contohnya: exampledir/exampleobject.txt. Path lengkap objek tidak boleh mengandung nama bucket.
String objectName = "exampledir/exampleobject.txt";
// Hapus tag objek.
DeleteObjectTaggingRequest deleteObjectTaggingRequest = new DeleteObjectTaggingRequest(bucketName, objectName);
oss.asyncDeleteObjectTagging(deleteObjectTaggingRequest, new OSSCompletedCallback<DeleteObjectTaggingRequest, DeleteObjectTaggingResult>() {
@Override
public void onSuccess(DeleteObjectTaggingRequest request, DeleteObjectTaggingResult result) {
Log.d("deleteTagging", "deleteTagging success");
}
@Override
public void onFailure(DeleteObjectTaggingRequest request, ClientException clientException, ServiceException serviceException) {
// Pengecualian permintaan.
if (clientException != null) {
// Pengecualian client, seperti pengecualian jaringan.
clientException.printStackTrace();
}
if (serviceException != null) {
// Pengecualian server.
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 tentang penandaan objek, kunjungi GitHub.
Untuk informasi selengkapnya tentang Operasi API yang dapat Anda panggil untuk mengonfigurasi tag objek, lihat PutObjectTagging.
Untuk informasi selengkapnya tentang Operasi API yang dapat Anda panggil untuk mengkueri tag objek, lihat GetObjectTagging.
Untuk informasi selengkapnya tentang Operasi API yang dapat Anda panggil untuk menghapus tag objek, lihat DeleteObjectTagging.
Untuk informasi selengkapnya tentang cara mencegah objek yang ada ditimpa, lihat Cegah objek ditimpa oleh objek dengan nama yang sama.
Untuk informasi selengkapnya tentang cara menginisialisasi instans OSSClient, lihat Inisialisasi.