Anda dapat menghapus satu file (objek), beberapa file tertentu, file dengan awalan tertentu, atau folder beserta seluruh isinya.
Berhati-hatilah saat melakukan operasi penghapusan. Objek yang dihapus tidak dapat dipulihkan.
Peringatan
Pada topik ini, titik akhir publik wilayah China (Hangzhou) digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.
Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Inisialisasi (C SDK).
Untuk menghapus objek, Anda harus memiliki izin
oss:DeleteObject. Untuk informasi selengkapnya, lihat Lampirkan kebijakan kustom ke RAM user.
Hapus satu file
Kode berikut menghapus file exampleobject.txt dari bucket bernama examplebucket.
#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
/* Tentukan nama bucket. Misalnya, examplebucket. */
const char *bucket_name = "examplebucket";
/* Tentukan path lengkap file yang akan dihapus. Path lengkap tidak boleh mencakup nama bucket. */
const char *object_name = "exampleobject.jpg";
/* Atur yourRegion ke ID Wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur ID Wilayah ke cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* Inisialisasi tipe aos_string_t dengan string char*. */
aos_str_set(&options->config->endpoint, endpoint);
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. */
aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
// Konfigurasikan dua parameter berikut.
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* Tentukan apakah CNAME digunakan. Nilai 0 menunjukkan bahwa CNAME tidak digunakan. */
options->config->is_cname = 0;
/* Setel parameter jaringan, seperti periode timeout. */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* Panggil metode aos_http_io_initialize di awal program untuk menginisialisasi sumber daya global seperti jaringan dan memori. */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* Memory pool (pool) untuk manajemen memori setara dengan apr_pool_t. Kode implementasinya berada di library apr. */
aos_pool_t *pool;
/* Buat memory pool. Parameter kedua adalah NULL, yang menunjukkan bahwa pool baru tidak mewarisi dari memory pool lain. */
aos_pool_create(&pool, NULL);
/* Buat dan inisialisasi opsi. Parameter ini mencakup informasi konfigurasi global seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
oss_request_options_t *oss_client_options;
/* Alokasikan memori untuk opsi dalam memory pool. */
oss_client_options = oss_request_options_create(pool);
/* Inisialisasi opsi klien oss_client_options. */
init_options(oss_client_options);
/* Inisialisasi parameter. */
aos_string_t bucket;
aos_string_t object;
aos_table_t *resp_headers = NULL;
aos_status_t *resp_status = NULL;
/* Tetapkan data tipe char* ke bucket tipe aos_string_t. */
aos_str_set(&bucket, bucket_name);
aos_str_set(&object, object_name);
/* Hapus file. */
resp_status = oss_delete_object(oss_client_options, &bucket, &object, &resp_headers);
/* Periksa apakah file berhasil dihapus. */
if (aos_status_is_ok(resp_status)) {
printf("delete object succeed\n");
} else {
printf("delete object failed\n");
}
/* Bebaskan memory pool. Ini melepaskan memori yang dialokasikan untuk sumber daya selama permintaan. */
aos_pool_destroy(pool);
/* Bebaskan sumber daya global yang sebelumnya dialokasikan. */
aos_http_io_deinitialize();
return 0;
}Hapus beberapa file
Saat menghapus file secara manual, Anda dapat menghapus hingga 1.000 file sekaligus. Anda dapat menghapus beberapa file tertentu, file dengan awalan tertentu, atau folder beserta seluruh isinya.
OSS juga mendukung penghapusan file otomatis dengan mengonfigurasi aturan siklus hidup. Untuk informasi selengkapnya, lihat Aturan siklus hidup berdasarkan waktu modifikasi terakhir.
Hapus beberapa file dengan nama yang ditentukan
Kode berikut menghapus beberapa file dengan nama yang ditentukan.
#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
/* Tentukan nama bucket. Misalnya, examplebucket. */
const char *bucket_name = "examplebucket";
/* Tentukan path lengkap file yang akan dihapus. Path lengkap tidak boleh mencakup nama bucket. */
const char *object_name1 = "exampleobject1.jpg";
const char *object_name2 = "testobject2.png";
/* Atur yourRegion ke ID Wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur ID Wilayah ke cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* Inisialisasi tipe aos_string_t dengan string char*. */
aos_str_set(&options->config->endpoint, endpoint);
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. */
aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
// Konfigurasikan dua parameter berikut.
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* Tentukan apakah CNAME digunakan. Nilai 0 menunjukkan bahwa CNAME tidak digunakan. */
options->config->is_cname = 0;
/* Setel parameter jaringan, seperti periode timeout. */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* Panggil metode aos_http_io_initialize di awal program untuk menginisialisasi sumber daya global seperti jaringan dan memori. */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* Memory pool (pool) untuk manajemen memori setara dengan apr_pool_t. Kode implementasinya berada di library apr. */
aos_pool_t *pool;
/* Buat memory pool. Parameter kedua adalah NULL, yang menunjukkan bahwa pool baru tidak mewarisi dari memory pool lain. */
aos_pool_create(&pool, NULL);
/* Buat dan inisialisasi opsi. Parameter ini mencakup informasi konfigurasi global seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
oss_request_options_t *oss_client_options;
/* Alokasikan memori untuk opsi dalam memory pool. */
oss_client_options = oss_request_options_create(pool);
/* Inisialisasi opsi klien oss_client_options. */
init_options(oss_client_options);
/* Inisialisasi parameter. */
aos_string_t bucket;
aos_string_t object1;
aos_string_t object2;
int is_quiet = 1;
aos_table_t *resp_headers = NULL;
aos_status_t *resp_status = NULL;
aos_str_set(&bucket, bucket_name);
aos_str_set(&object1, object_name1);
aos_str_set(&object2, object_name2);
/* Bangun daftar file yang akan dihapus. */
aos_list_t object_list;
aos_list_t deleted_object_list;
oss_object_key_t *content1;
oss_object_key_t *content2;
aos_list_init(&object_list);
aos_list_init(&deleted_object_list);
content1 = oss_create_oss_object_key(pool);
aos_str_set(&content1->key, object_name1);
aos_list_add_tail(&content1->node, &object_list);
content2 = oss_create_oss_object_key(pool);
aos_str_set(&content2->key, object_name2);
aos_list_add_tail(&content2->node, &object_list);
/* Hapus file dalam daftar. `is_quiet` menentukan apakah hasil penghapusan dikembalikan. */
resp_status = oss_delete_objects(oss_client_options, &bucket, &object_list, is_quiet, &resp_headers, &deleted_object_list);
if (aos_status_is_ok(resp_status)) {
printf("delete objects succeeded\n");
} else {
printf("delete objects failed\n");
}
/* Bebaskan memory pool. Ini melepaskan memori yang dialokasikan untuk sumber daya selama permintaan. */
aos_pool_destroy(pool);
/* Bebaskan sumber daya global yang sebelumnya dialokasikan. */
aos_http_io_deinitialize();
return 0;
}Hapus beberapa file dengan awalan tertentu atau dalam folder tertentu
Jika nilai awalan `object_prefix` pada kode contoh berikut adalah string kosong atau NULL, semua file dalam bucket akan dihapus. Gunakan operasi ini dengan hati-hati.
Kode berikut menghapus beberapa file dengan awalan tertentu, atau folder tertentu beserta seluruh isinya.
#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
/* Tentukan nama bucket. Misalnya, examplebucket. */
const char *bucket_name = "examplebucket";
/* Untuk menghapus semua file yang memiliki awalan src, atur awalan ke src. Ini akan menghapus semua file non-folder dengan awalan src, folder src, dan semua file dalam folder src. */
const char *object_prefix = "src";
/* Atur yourRegion ke ID Wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur ID Wilayah ke cn-hangzhou. */
const char *region = "yourRegion";
/* Untuk menghapus hanya folder src dan semua file di dalamnya, atur awalan ke src/. */
/* const char *object_prefix = "src/";*/
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* Inisialisasi tipe aos_string_t dengan string char*. */
aos_str_set(&options->config->endpoint, endpoint);
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. */
aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
// Konfigurasikan dua parameter berikut.
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* Tentukan apakah CNAME digunakan. Nilai 0 menunjukkan bahwa CNAME tidak digunakan. */
options->config->is_cname = 0;
/* Setel parameter jaringan, seperti periode timeout. */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* Panggil metode aos_http_io_initialize di awal program untuk menginisialisasi sumber daya global seperti jaringan dan memori. */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* Memory pool (pool) untuk manajemen memori setara dengan apr_pool_t. Kode implementasinya berada di library apr. */
aos_pool_t *pool;
/* Buat memory pool. Parameter kedua adalah NULL, yang menunjukkan bahwa pool baru tidak mewarisi dari memory pool lain. */
aos_pool_create(&pool, NULL);
/* Buat dan inisialisasi opsi. Parameter ini mencakup informasi konfigurasi global seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
oss_request_options_t *oss_client_options;
/* Alokasikan memori untuk opsi dalam memory pool. */
oss_client_options = oss_request_options_create(pool);
/* Inisialisasi opsi klien oss_client_options. */
init_options(oss_client_options);
/* Inisialisasi parameter. */
aos_string_t bucket;
aos_string_t prefix;
aos_status_t *resp_status = NULL;
aos_str_set(&bucket, bucket_name);
aos_str_set(&prefix, object_prefix);
/* Hapus file dengan awalan yang ditentukan. */
resp_status = oss_delete_objects_by_prefix(oss_client_options, &bucket, &prefix);
if (aos_status_is_ok(resp_status)) {
printf("delete objects by prefix succeeded\n");
} else {
printf("delete objects by prefix failed\n");
}
/* Bebaskan memory pool. Ini melepaskan memori yang dialokasikan untuk sumber daya selama permintaan. */
aos_pool_destroy(pool);
/* Bebaskan sumber daya global yang sebelumnya dialokasikan. */
aos_http_io_deinitialize();
return 0;
}Referensi
Untuk kode contoh lengkap penghapusan satu atau beberapa file, lihat contoh di GitHub.
Untuk informasi selengkapnya mengenai operasi API yang digunakan untuk menghapus satu file, lihat DeleteObject.
Untuk informasi selengkapnya mengenai operasi API yang digunakan untuk menghapus beberapa file, lihat DeleteMultipleObjects.