C#Azure Blob存储/获取blob大小

时间:2017-11-23 11:04:24

标签: c# azure azure-storage

我已经开始使用Azure存储了。我已经实现了创建/删除容器,创建/删除/ isExist blob功能。但是我从Azure存储中找到了当前的Blob大小。

我做了很多研究,但我找不到任何合理的解决方案。

这是获取Blob大小的函数:

public long GetBlockBlobSize(string containerName, string blobName)
        {
            try
            {
                CloudBlobContainer container = _blobClient.GetContainerReference(containerName);
                var blockBlob = container.GetBlockBlobReference(blobName);
                return blockBlob.Properties.Length;
            }
            catch (Exception ex)
            {
                throw;
            }
        }

blockBlob.Properties.Length值为-1。

  • 这种方法有什么不对吗?
  • 有更好的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:13)

请将您的代码更改为:

public long GetBlockBlobSize(string containerName, string blobName)
{
    try
    {
        CloudBlobContainer container = _blobClient.GetContainerReference(containerName);
        var blockBlob = container.GetBlockBlobReference(blobName);
        blockBlob.FetchAttributes();
        return blockBlob.Properties.Length;
    }
    catch (Exception ex)
    {
        throw;
    }
}

基本上,您的代码只是在客户端创建CloudBlockBlob的实例,因此使用默认值初始化属性。当您调用FetchAttributes方法时,将从Azure存储中提取blob的实际属性。