如何获取Azure CloudBlobContainer的大小

本文关键字:CloudBlobContainer Azure 何获取 获取 | 更新日期: 2023-09-27 17:59:29

我正在为我的应用程序创建一个.net包装服务,该服务将Azure Blob存储用作文件存储。我的应用程序为系统中的每个"帐户"创建一个新的CloudBlobContainer。每个帐户都被限制为最大存储量。

查询Azure CloudBlobContainer的当前大小(空间利用率)最简单、最有效的方法是什么?

如何获取Azure CloudBlobContainer的大小

仅供参考答案如下。希望这能有所帮助。

public static long GetSpaceUsed(string containerName)
{
    var container = CloudStorageAccount
        .Parse(ConfigurationManager.ConnectionStrings["StorageConnection"].ConnectionString)
        .CreateCloudBlobClient()
        .GetContainerReference(containerName);
    if (container.Exists())
    {
        return (from CloudBlockBlob blob in
                container.ListBlobs(useFlatBlobListing: true)
                select blob.Properties.Length
               ).Sum();
    }
    return 0;
}

从WindwosAzure.Storage.dll的v9.x.x.x或更高版本(来自Nuget包)起,ListBlobs方法不再公开。因此,针对.NET Core 2.x+的应用程序的解决方案如下所示:

BlobContinuationToken continuationToken = null;
long totalBytes = 0;
do
{
    var response = await container.ListBlobsSegmentedAsync(continuationToken);
    continuationToken = response.ContinuationToken;
    totalBytes += response.Results.OfType<CloudBlockBlob>().Sum(s => s.Properties.Length);
} while (continuationToken != null);
相关文章:
  • 没有找到相关文章