Microsoft.WindowsAzure.StorageClient.CloudBlockBlob.DownloadBlockList返回0个块
我正在使用Microsoft.WindowsAzure.StorageClient.CloudBlockBlob.DownloadBlockList返回0个块,azure,azure-storage,azure-storage-blobs,Azure,Azure Storage,Azure Storage Blobs,我正在使用CloudBlobContainer.ListBlobs获取IListBlobItems的列表。然后,我使用以下代码在每个条目上循环以显示blob的大小: foreach (IListBlobItem item in blobs) { if (item.GetType() == typeof(CloudBlobDirectory)) { } else if (item.GetType
CloudBlobContainer.ListBlobs
获取IListBlobItems的列表。然后,我使用以下代码在每个条目上循环以显示blob的大小:
foreach (IListBlobItem item in blobs)
{
if (item.GetType() == typeof(CloudBlobDirectory))
{ }
else if (item.GetType() == typeof(CloudBlockBlob))
{
CloudBlockBlob blockBlob = (CloudBlockBlob)item;
IEnumerable<ListBlockItem> blocks = blockBlob.DownloadBlockList(new BlobRequestOptions { BlobListingDetails = BlobListingDetails.All });
Console.WriteLine(blockBlob.Name.PadRight(50, ' ') +
blocks.Sum(b => b.Size));
}
else
{
Console.WriteLine(item.Uri.LocalPath);
}
}
foreach(BLOB中的IListBlobItem项)
{
if(item.GetType()==typeof(CloudBlobDirectory))
{ }
else if(item.GetType()==typeof(CloudBlockBlob))
{
CloudBlockBlob blockBlob=(CloudBlockBlob)项;
IEnumerable blocks=blockBlob.DownloadBlockList(新BlobRequestOptions{BlobListingDetails=BlobListingDetails.All});
Console.WriteLine(blockBlob.Name.PadRight(50,)+
和(b=>b.Size));
}
其他的
{
WriteLine(item.Uri.LocalPath);
}
}
但是,当我检查变量
块的计数时,它总是0。这是为什么?我认为您应该检查CloudBlob而不是CloudBlockBlob类型。如果你再加上一个,你知道尺寸了吗?如果不是这样,您是否看到代码进入else If,并且b.size仅为零?我认为您应该检查CloudBlob而不是CloudBlockBlob类型。如果你再加上一个,你知道尺寸了吗?如果不是这样,您是否看到代码进入else If,而b.size仅为零?我相信(不是100%确定)DownloadBlockList()
只有在blob最初以块的形式上载时才有效,而不是一次全部上载。这可能就是为什么你没有回头路
在任何情况下,您似乎只想要水滴的总大小。因此,使用blob.Properties.Length
属性可能是一种更简单的方法:
CloudBlockBlob blockBlob = (CloudBlockBlob)item;
blockBlob.FetchAttributes();
Console.WriteLine(blockBlob.Name.PadRight(50, ' ') + blockBlob.Properties.Length);
我相信(不是100%确定)只有当blob最初以块的形式上传,而不是一次全部上传时,DownloadBlockList()
才有效。这可能就是为什么你没有回头路
在任何情况下,您似乎只想要水滴的总大小。因此,使用blob.Properties.Length
属性可能是一种更简单的方法:
CloudBlockBlob blockBlob = (CloudBlockBlob)item;
blockBlob.FetchAttributes();
Console.WriteLine(blockBlob.Name.PadRight(50, ' ') + blockBlob.Properties.Length);
谢谢你的回答,但是我认为只有blockblobbs才有blocks。事实上,CloudBlob上没有DownloadBlockList方法。只有CloudBlockBlob有这种方法。谢谢你的回答,但我认为只有CloudBlockBlob才有块。事实上,CloudBlob上没有DownloadBlockList方法。只有CloudBlockBlob有这种方法。太好了!正是我想要的。太好了!正是我要找的。