2013-02-15 41 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 2013-02-15 13:14:41

+0

你到底需要检索什么? – 2013-02-15 13:15:35

+0

我猜我可以从uri中提取文件名。如果可能的话,我也喜欢文件大小。 – 2013-02-15 13:22:48

回答

10

试试看看这个代码。代码假定您的blob容器中的所有Blob都是类型块blob。

存储客户端库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("======================================="); 
     } 

存储客户端库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

谢谢。这似乎完成了这项工作。 – 2013-02-15 15:29:50

+0

现在轻微的问题家伙在下载位置返回此错误消息: – 2013-02-18 15:44:20

+0

你收到的错误信息是什么? – 2013-02-20 14:57:48