Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Microsoft.WindowsAzure.StorageClient.CloudBlockBlob.DownloadBlockList返回0个块_Azure_Azure Storage_Azure Storage Blobs - Fatal编程技术网

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有这种方法。太好了!正是我想要的。太好了!正是我要找的。