You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过BlobContainerClient仅获取容器根目录下的Blob?

仅获取Azure Blob容器根目录下的Blob

要实现只获取容器根目录的Blob,避免返回子文件夹中的内容,你可以利用GetBlobsAsync方法的delimiter参数,让服务端直接过滤结果,减少返回的payload大小,无需在客户端做大量过滤。

Azure Blob存储中的“文件夹”是虚拟概念,依赖路径中的/作为分隔符。当你指定delimiter: "/"时,API会只返回根目录的Blob以及虚拟文件夹的前缀条目,再通过IsPrefix属性就能区分出实际的根目录Blob。

修改后的代码示例:

var blobs = _blobContainerClient.GetBlobsAsync(
    BlobTraits.Metadata, 
    BlobStates.None, 
    prefix: "", 
    delimiter: "/"
);

await foreach (var blobItem in blobs)
{
    // 排除虚拟文件夹条目,只处理根目录的Blob
    if (!blobItem.IsPrefix)
    {
        // 这里写你的Blob处理逻辑
        Console.WriteLine($"根目录Blob: {blobItem.Name}");
    }
}

原理说明

  • delimiter: "/":告诉Blob存储服务按/分割路径,只返回根层级的内容,不会递归遍历子文件夹。
  • IsPrefix属性:标记当前条目是虚拟文件夹(true)还是实际Blob(false),通过这个判断就能筛选出根目录的Blob。

这种方式是服务端层面的过滤,相比客户端过滤能显著减少网络传输的数据量,尤其当Blob数量增长后,优势会更明显。

内容的提问来源于stack exchange,提问作者smoksnes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 18:33:11