按目录获取 Azure 容器 Blob 列表

Get azure container blobs list by directory

我正在按目录组织我的容器内容

rep1/subrep1/subsubrep1'
rep2/subrep2/subsubrep2'

在每个代表中我都有 blob 文件。

我想检索“rep1/subrep1/subsubrep1”的 blob 列表

名为 tenants 的容器。

try {
    const blobServiceClient = await BlobServiceClient.fromConnectionString(
        process.env.AzureWebJobsStorage
    );

    const containerClient = await blobServiceClient.getContainerClient(
        'tenants'
    );
    for await (const blob of containerClient.listBlobsFlat()) {
        let blobClient = await containerClient.getBlobClient(blob.name);
        let splitedString = blobClient.name.split('/')
        filesList.push({
            label: splitedString[splitedString.length].split(".wav")[0],
            value: blobClient.url
        });
    }
} catch (err) {
    console.log(err)
}

实际上,对于我的代码,我应该迭代所有 blob 文件。

我可以过滤结果,但我会找到如何获取特定子文件夹 blob

不使用 listBlobsFlat,而是使用 listBlobsByHierachy。对于 delimiter 参数,指定一个空字符串并在选项参数中将 rep1/subrep1/subsubrep1 指定为 prefix

类似于:

let iter = await containerClient.listBlobsByHierarchy("", { prefix: "rep1/subrep1/subsubrep1/" });