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

Saa*_*adi 4 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;
            }
        }
Run Code Online (Sandbox Code Playgroud)

blockBlob.Properties.Length 值为-1.

  • 这种方法有什么问题吗?
  • 有更好的方法吗?

谢谢!

Gau*_*tri 17

请将您的代码更改为:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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