通过目录获取Azure容器Blob列表

时间:2020-03-23 17:14:17

标签: javascript azure-storage azure-storage-blobs azure-container-service

我正在按目录整理我的容器内容

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

1 个答案:

答案 0 :(得分:1)

使用listBlobsByHierachy代替使用listBlobsFlat。对于delimiter参数,请指定一个空字符串,然后在options参数中将rep1/subrep1/subsubrep1指定为prefix

类似的东西:

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