How to get Azure Storage Blob Size. - JackyChiou/jackychiou.github.io GitHub Wiki

Sample Code:

using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Auth;
using Microsoft.Azure.Storage.Blob;
using System;
using System.Threading.Tasks;

namespace GetStorageFolderSize
{
    class Program
    {
        static async Task Main(string[] args)
        {
            string accountName = "jackyst3";
            string accountKey = @"fIadrk5jQg9maetig6vJX4GhWRfCGYVxuyWZL6QE2Tbb/P1Y4+OvXY2DFKYJiKAzX3hJ86IU1cbtaJHcsi9tJg==";

            Console.WriteLine("Storage Account Name: " + accountName);
            var account = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
            var blobClient = account.CreateCloudBlobClient();
            //change it to your container name
            var container = blobClient.GetContainerReference("data");

            Console.WriteLine("Get a list of all blobs in your container");

            BlobResultSegment result = await container.ListBlobsSegmentedAsync(null);

            Console.WriteLine("Iterate each blob");

            int segmentSize = 50000;

            BlobContinuationToken continuationToken = null;
            CloudBlob blob;

            long size = 0;
            long count = 0;
            try
            {
                // Call the listing operation and enumerate the result segment.
                // When the continuation token is null, the last segment has been returned
                // and execution can exit the loop.
                do
                {
                    BlobResultSegment resultSegment = await container.ListBlobsSegmentedAsync(string.Empty,
                        true, BlobListingDetails.Metadata, segmentSize, continuationToken, null, null);

                    foreach (var blobItem in resultSegment.Results)
                    {
                        // A flat listing operation returns only blobs, not virtual directories.
                        blob = (CloudBlob)blobItem;

                        // Write out some blob properties.
                        Console.WriteLine("Blob Uri: {0} , size: {1}", blob.Uri, blob.Properties.Length);

                        size += blob.Properties.Length;
                        count++;
                    }

                    Console.WriteLine($"Foreach completed at: {DateTime.Now}");

                    // Get the continuation token and loop until it is null.
                    continuationToken = resultSegment.ContinuationToken;

                } while (continuationToken != null);
            }
            catch (StorageException e)
            {
                Console.WriteLine(e.Message);
            }



            Console.WriteLine("Total Size: {0}", size);
            Console.WriteLine("Total count: {0}", count);
        }
    }
}