2013-02-15 2 views
2

Так что я пытаюсь получить информацию о файле, который у меня есть в хранилище blob. Идея заключается в том, что клиенты запрашивают документы для размещения на своем портале, которые специально относятся к ним.Извлечение имени файла blob

Это миграция и в настоящее время файлы перечислены в сетке в формате: Имя

файла, размер файла, тип файла, Ссылка для скачивания.

У меня возникают проблемы с извлечением свойств blob.

Вот фрагмент кода того, что у меня есть.

public void BindGridDocuments() 
{ 
    var storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnection"].ConnectionString); 
    var blobStorage = storageAccount.CreateCloudBlobClient(); 
    CloudBlobContainer container = blobStorage.GetContainerReference("documents"); 
    var documentCollection = container.ListBlobs(); 
    foreach (var document in documentCollection) 
    { 
     string filename = document.Uri.ToString(); 

    } 
} 
+0

document.Uri должен содержать имя файла. Вам нужно будет разбить его. – tomasmcguinness

+0

Что именно вам нужно получить? –

+0

Я догадался, что смогу вытащить имя файла из ури. Мне также понравится размер файла, если это возможно. –

ответ

10

Пробуйте этот код. Код предполагает, что все капли в вашем блоке blob имеют блочные блокировки типа.

Storage Client Library 2.0:

 CloudStorageAccount storageAccount = CloudStorageAccount.DevelopmentStorageAccount; 
     CloudBlobContainer blobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference("images"); 
     var blobs = blobContainer.ListBlobs(null, true, BlobListingDetails.All).Cast<CloudBlockBlob>(); 
     foreach (var blockBlob in blobs) 
     { 
      Console.WriteLine("Name: " + blockBlob.Name); 
      Console.WriteLine("Size: " + blockBlob.Properties.Length); 
      Console.WriteLine("Content type: " + blockBlob.Properties.ContentType); 
      Console.WriteLine("Download location: " + blockBlob.Uri); 
      Console.WriteLine("======================================="); 
     } 

Storage Client Library 1.7:

 CloudStorageAccount storageAccount = CloudStorageAccount.DevelopmentStorageAccount; 
     CloudBlobContainer blobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference("images"); 
     var blobs = blobContainer.ListBlobs(new BlobRequestOptions() 
      { 
       BlobListingDetails = BlobListingDetails.All, 
       UseFlatBlobListing = true, 
      }).Cast<CloudBlockBlob>(); 
     foreach (var blockBlob in blobs) 
     { 
      Console.WriteLine("Name: " + blockBlob.Name); 
      Console.WriteLine("Size: " + blockBlob.Properties.Length); 
      Console.WriteLine("Content type: " + blockBlob.Properties.ContentType); 
      Console.WriteLine("Download location: " + blockBlob.Uri); 
      Console.WriteLine("======================================="); 
     } 
+0

Спасибо. Это, похоже, выполнило эту работу. –

+0

Незначительная проблема теперь в том, что место загрузки возвращает это сообщение об ошибке: –

+0

Какое сообщение об ошибке вы получаете? –