我已经开始使用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。
谢谢!
答案 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的实际属性。