Topik ini menjelaskan cara menampilkan semua file (Objects) dalam bucket tertentu serta cara menampilkan file dan subdirektori dalam direktori tertentu.
Catatan penggunaan
Saat menggunakan alat packaging seperti Webpack dan Browserify, instal OSS SDK untuk Browser.js dengan menjalankan perintah npm install ali-oss.
Jika Anda ingin mengakses bucket OSS dari browser tetapi bucket tersebut belum dikonfigurasi dengan aturan CORS, browser akan menolak permintaan tersebut. Oleh karena itu, Anda harus mengonfigurasi aturan CORS pada bucket untuk mengaksesnya dari browser. Untuk informasi selengkapnya, lihat Instalasi.
Dalam kebanyakan kasus, OSS SDK untuk Browser.js digunakan di browser. Untuk mencegah pasangan AccessKey Anda terpapar, kami menyarankan penggunaan kredensial akses temporary yang diperoleh dari Security Token Service (STS) untuk mengakses OSS.
Kredensial akses temporary terdiri atas pasangan AccessKey dan token keamanan. Pasangan AccessKey mencakup ID AccessKey dan Rahasia AccessKey. Untuk informasi selengkapnya tentang cara memperoleh kredensial akses temporary, lihat Gunakan STS untuk otorisasi akses temporary.
Daftar semua file dalam bucket
Anda dapat menggunakan fungsi list untuk menampilkan semua file dalam bucket saat ini:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
</head>
<body>
<script>
const client = new OSS({
// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel yourRegion ke oss-cn-hangzhou.
region: "yourRegion",
authorizationV4: true,
// Pasangan AccessKey temporary (ID AccessKey dan Rahasia AccessKey) yang diperoleh dari Security Token Service (STS).
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// Token keamanan (SecurityToken) yang diperoleh dari STS.
stsToken: 'yourSecurityToken',
// Tentukan nama bucket. Misalnya, examplebucket.
bucket: "examplebucket",
});
async function list(dir) {
try {
// Secara default, maksimal 1.000 file dikembalikan.
let result = await client.list();
console.log(result);
// Lanjutkan mendapatkan daftar file mulai dari file setelah file terakhir yang dibaca pada operasi list sebelumnya.
if (result.isTruncated) {
result = await client.list({ marker: result.nextMarker });
}
// Tampilkan daftar file yang memiliki awalan 'ex'.
result = await client.list({
prefix: "ex",
});
console.log(result);
// Tampilkan daftar file yang memiliki awalan 'ex' dan namanya berada setelah 'example' dalam urutan alfabet.
result = await client.list({
prefix: "ex",
marker: "example",
});
console.log(result);
} catch (e) {
console.log(e);
}
}
list();
</script>
</body>
</html>
Daftar file dan subdirektori dalam direktori tertentu
OSS tidak memiliki konsep direktori. Semua elemen disimpan sebagai Objects. Untuk membuat direktori, Anda dapat membuat Object berukuran 0 KB dengan nama yang diakhiri garis miring (/). Object tersebut dapat diunggah dan diunduh. Konsol OSS menampilkan Object yang diakhiri garis miring (/) sebagai direktori. Anda dapat menggunakan parameter Delimiter dan Prefix untuk mensimulasikan fungsionalitas direktori:
Jika Anda menyetel Prefix ke nama direktori, Anda dapat menampilkan semua file yang dimulai dengan awalan tersebut. Ini secara rekursif menampilkan semua file dan subdirektori di dalam direktori tersebut.
Jika Anda juga menyetel Delimiter ke garis miring (/), respons hanya menampilkan file dan subdirektori dalam direktori tersebut. Nama subdirektori dikembalikan dalam bagian SubDir, sedangkan file dan direktori di dalam subdirektori tersebut tidak ditampilkan.
Asumsikan sebuah bucket berisi file-file berikut:
foo/x
foo/y
foo/bar/a
foo/bar/b
foo/hello/C/1
foo/hello/C/2
...
foo/hello/C/9999
Anda dapat menggunakan fungsi listDir untuk menampilkan file dan subdirektori dalam direktori tertentu:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
</head>
<body>
<script>
const client = new OSS({
// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel yourRegion ke oss-cn-hangzhou.
region: 'yourRegion',
authorizationV4: true,
// Pasangan AccessKey temporary (ID AccessKey dan Rahasia AccessKey) yang diperoleh dari STS.
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// Token keamanan (SecurityToken) yang diperoleh dari STS.
stsToken: 'yourSecurityToken',
// Tentukan nama bucket. Misalnya, examplebucket.
bucket: "examplebucket",
});
async function listDir(dir) {
try {
let result = await client.list({
prefix: dir,
// Setel delimiter untuk direktori ke garis miring (/).
delimiter: "/",
});
result.prefixes.forEach(function (subDir) {
console.log("SubDir: %s", subDir);
});
result.objects.forEach(function (obj) {
console.log("Object: %s", obj.name);
});
} catch (e) {
console.log(e);
}
}
listDir();
</script>
</body>
</html>
Daftar file yang dikembalikan adalah sebagai berikut:
> listDir('foo/')
=> SubDir: foo/bar/
SubDir: foo/hello/
Object: foo/x
Object: foo/y
> listDir('foo/bar/')
=> Object: foo/bar/a
Object: foo/bar/b
> listDir('foo/hello/C/')
=> Object: foo/hello/C/1
Object: foo/hello/C/2
...
Object: foo/hello/C/9999 Referensi
Untuk informasi selengkapnya tentang operasi API, lihat GetBucket (ListObjects).