本文介绍如何列举指定目录下的文件和子目录。
OSS 是基于对象的存储服务,没有目录的概念。存储在一个 Bucket 中的所有文件都是通过文件的 key 来唯一标识,并没有层级的结构。通过 OSS 提供的公共前缀的功能,您可以方便地模拟目录结构,像传统的文件一样将文件分门别类地存放在不同的目录下,公共前缀的概念请参见列举 Object。
假设 Bucket 中已有如下文件:
foo/x foo/y foo/bar/a foo/bar/b foo/hello/C/1 foo/hello/C/2 ... foo/hello/C/9999
接下来我们调用函数listDir来列举指定目录下的文件和子目录:
let OSS = require('ali-oss'); let client = new OSS({ region: '<Your region>', accessKeyId: '<Your AccessKeyId>', accessKeySecret: '<Your AccessKeySecret>', bucket: '<Your bucket name>', }); async function listDir(dir) let result = await client.list({ prefix: dir, delimiter: '/' }); result.prefixes.forEach(function (subDir) { console.log('SubDir: %s', subDir); }); result.objects.forEach(function (obj) { ==> console.log('Object: %s', obj.name); }); end
运行结果如下:
> await listDir('foo/') => SubDir: foo/bar/ SubDir: foo/hello/ Object: foo/x Object: foo/y > await listDir('foo/bar/') => Object: foo/bar/a Object: foo/bar/b > await listDir('foo/hello/C/') => Object: foo/hello/C/1 Object: foo/hello/C/2 ... Object: foo/hello/C/9999