在云函数中获取文件列表
TIP
在云函数中操作云存储,需要提前创建一个存储桶(Bucket),以下示例使用 data 存储桶演示上传文件操作,请提前创建该存储桶。
获取文件列表
ts
import cloud from '@lafjs/cloud'
export default async function (ctx: FunctionContext) {
// 获取存储桶
const bucket = cloud.storage.bucket('data')
// 获取文件列表
const res = await bucket.listFiles()
return res
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
返回结果 res.Contents 格式如下:
json
[
{
"Key": "laf.jpg",
"LastModified": "2023-12-12T12:03:36.154Z",
"ETag": "f0ce41411bdec6212f0836ebfbc56375",
"Size": 49425
},
{
"Key": "test.html",
"LastModified": "2023-12-12T11:38:53.117Z",
"ETag": "08ba5fadaac344913c216bcd26348263",
"Size": 10
}
]1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
只获取当前目录下的文件列表
ts
import cloud from '@lafjs/cloud'
export default async function (ctx: FunctionContext) {
// 获取存储桶
const bucket = cloud.storage.bucket('data')
// 获取文件列表
const res = await bucket.listFiles({ Delimiter: '/' })
return res
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
INFO
Delimiter 是一个分隔符,用于对存储桶中的对象名称进行分组。如果您希望获取当前目录下的文件列表,可以使用 Delimiter 参数。 若不指定 Delimiter 参数,则返回存储桶中所有文件的列表,包括子目录下的文件。
获取子目录下的文件列表
ts
import cloud from '@lafjs/cloud'
export default async function (ctx: FunctionContext) {
// 获取存储桶
const bucket = cloud.storage.bucket('data')
// 获取 `images/` 目录下的文件列表
const res = await bucket.listFiles({ Prefix: 'images/', Delimiter: '/' })
return res
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
TIP
Prefix 是一个前缀,用于对存储桶中的对象名称进行筛选。如果您希望获取子目录下的文件列表,可以使用 Prefix 参数。
获取指定数量的文件列表
ts
import cloud from '@lafjs/cloud'
export default async function (ctx: FunctionContext) {
// 获取存储桶
const bucket = cloud.storage.bucket('data')
// 获取前 10 个文件
const res = await bucket.listFiles({ MaxKeys: 10 })
return res
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
TIP
MaxKeys 用于对存储桶中的对象数量进行限定。如果您希望获取指定数量的文件列表,可以使用 MaxKeys 参数,默认值为 1000。
分页获取文件列表
ts
import cloud from '@lafjs/cloud'
export default async function (ctx: FunctionContext) {
const marker = ctx.query.marker
const bucket = cloud.storage.bucket('data')
const res = await bucket.listFiles({ MaxKeys: 10, Marker: marker })
return res
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
TIP
listFiles 返回的 res 对象中包含 NextMarker 和 IsTruncated 两个属性,用于分页获取下一页文件列表:
IsTruncated用于判断是否还有下一页文件列表,如果为true,则表示还有下一页文件列表,否则表示已经是最后一页文件列表。NextMarker用于指定下一页文件列表的起始位置,如果IsTruncated为true,则可以使用NextMarker作为Marker参数,获取下一页文件列表。
Laf 开发文档