列举文件
本文介绍如何列举文件。
列举指定存储空间下的文件
通过list
接口列举当前 Bucket 下的所有文件。主要参数说明如下:
- prefix:只列出符合特定前缀的文件。
- marker:只列出文件名大于 marker 之后的文件。
- delimiter:用于获取文件的公共前缀。
- max-keys:用于指定最多返回的文件个数。
以下代码用于列举指定存储空间下的所有文件:
let OSS = require('ali-oss');
let client = new OSS({
region: '<Your region>',
accessKeyId: '<Your AccessKeyId>',
accessKeySecret: '<Your AccessKeySecret>',
bucket: '<Your bucket name>',
});
async function list () {
{
// 不带任何参数,默认最多返回1000个文件。
let result = await client.list();
console.log(result);
// 根据nextMarker继续列出文件。
if (result.isTruncated) {
let result = await client.list({
marker: result.nextMarker
});
}
// 列举前缀为'my-'的文件。
let result = await client.list({
prefix: 'my-'
});
console.log(result);
// 列举前缀为'my-'且在'my-object'之后的文件。
let result = await client.list({
prefix: 'my-',
marker: 'my-object'
});
console.log(result);
} catch (e) {
console.log(e);
}
}
list();
列举指定目录下的文件和子目录
OSS没有文件夹(目录)的概念,所有元素都是以文件来存储。创建文件夹本质上来说是创建了一个大小为0并以正斜线(/)结尾的文件。这个文件可以被上传和下载,控制台会对以正斜线(/)结尾的文件以文件夹的方式展示。
假设 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
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论