2013-01-17 39 views
7

मैं Azure संग्रहण में कंटेनर का आकार कैसे प्राप्त कर सकता हूं? मैं सी # एपीआई के माध्यम से Azure संग्रहण एक्सेस:Azure स्टोरेज कंटेनर आकार

var account = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["AzureStoragePrimary"]); 
var client = account.CreateCloudBlobClient(); 
var container = client.GetContainerReference("myContainer"); 
+0

क्या आप वाकई सी # का उपयोग कर रहे हैं? 'var खाता'? – Raptor

उत्तर

5

मैं विंडोज Azure संग्रहण से Microsoft.WindowsAzure.Storage.dll 2.0.0.0 करने के लिए Windows Azure एसडीके से Microsoft.WindowsAzure.StorageClient.dll 1.1.0.0 अद्यतन किया है NuGet पैकेज और यह अब काम करता है।

long size = 0; 
var list = container.ListBlobs(); 
foreach (CloudBlockBlob blob in list) { 
    size += blob.Properties.Length; 
} 
+0

क्या मूल्य वापसी? केबी? mb? – Rod

+1

'लंबाई' संपत्ति की इकाई * बाइट्स * है। –

7
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["AzureStoragePrimary"]); 
CloudBlobClient blobClient = account.CreateCloudBlobClient(); 
CloudBlobContainer blobContainer = blobClient.GetContainerReference("myContainer"); 
int fileSize = 0; 
foreach (var blobItem in blobContainer.ListBlobs()) 
{ 
    fileSize += blobItem.Properties.Length; 
} 

fileSize कंटेनर का आकार, धब्बे (फ़ाइलें) अर्थात् कुल आकार निहित होता है।

संदर्भ: CloudBlob: http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storageclient.cloudblob_methods.aspx

+1

यह 'लंबा आकार = 0; foreach (कंटेनर में var blob.ListBlobs()) {आकार + = कंटेनर। GetBlobReference (blob.Uri.AbsoluteUri) .Properties.Length; } 'हमेशा देता है 0. –

5

एक संभावित अधिक संपूर्ण दृष्टिकोण। मुख्य अंतर, listblobs() कॉल में दूसरा पैरा है, जो एक फ्लैट सूची को लागू करता है:

public class StorageReport 
{ 
    public int FileCount { get; set; } 
    public int DirectoryCount { get; set; } 
    public long TotalBytes { get; set; } 
} 

//embdeded in some method 
StorageReport report = new StorageReport() { 
    FileCount = 0, 
    DirectoryCount = 0, 
    TotalBytes = 0 
}; 


foreach (IListBlobItem blobItem in container.ListBlobs(null, true, BlobListingDetails.None)) 
{ 
    if (blobItem is CloudBlockBlob) 
    { 
     CloudBlockBlob blob = blobItem as CloudBlockBlob; 
     report.FileCount++; 
     report.TotalBytes += blob.Properties.Length; 
    } 
    else if (blobItem is CloudPageBlob) 
    { 
     CloudPageBlob pageBlob = blobItem as CloudPageBlob; 

     report.FileCount++; 
     report.TotalBytes += pageBlob.Properties.Length; 
    } 
    else if (blobItem is CloudBlobDirectory) 
    { 
     CloudBlobDirectory directory = blobItem as CloudBlobDirectory; 

     report.DirectoryCount++; 
    }       
} 
+0

यह बहुत अच्छा है! इसने 6TB डेटा से अधिक की चाल और लाखों फाइलें –

+0

@ElliotWood जंगली है! खुशी हुई यह खड़ा हुआ। – pimbrouwers