获取容器中Azure blob文件的名称列表?

我需要列出Azure Blob文件名的名称。 目前我能够列出所有带URL的文件,但我只需要列出名称。 我想避免解析名称。 你能看到我的下面的代码和指南:

CloudStorageAccount backupStorageAccount = CloudStorageAccount.Parse(blobConectionString); var backupBlobClient = backupStorageAccount.CreateCloudBlobClient(); var backupContainer = backupBlobClient.GetContainerReference(container); var list = backupContainer.ListBlobs(); 

如果您使用的是Windows Azure Storage 4.3.0 ,请尝试使用此代码。

 List blobNames = list.OfType().Select(b => b.Name).ToList(); 

以下是完成此操作的另一种方法:

 CloudStorageAccount backupStorageAccount = CloudStorageAccount.Parse(blobConectionString); var backupBlobClient = backupStorageAccount.CreateCloudBlobClient(); var backupContainer = backupBlobClient.GetContainerReference(container); // useFlatBlobListing is true to ensure loading all files in // virtual blob sub-folders as a plain list var list = backupContainer.ListBlobs(useFlatBlobListing: true); var listOfFileNames = new List(); foreach (var blob in blobs) { var blobFileName = blob.Uri.Segments.Last(); listOfFileNames.Add(blobFileName); } return listOfFileNames; 

来源: 如何递归加载Azure blob文件列表?

完整的答案与细节。

  // Parse the connection string and return a reference to the storage account. CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("AzureBlobConnectionString")); CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); // Retrieve reference to a previously created container. CloudBlobContainer container = blobClient.GetContainerReference("container_name"); // Retrieve reference to a blob named "test.csv" CloudBlockBlob blockBlob = container.GetBlockBlobReference("BlobName.tex"); //Gets List of Blobs var list = container.ListBlobs(); List blobNames = list.OfType().Select(b => b.Name).ToList(); 

我们可以获得一些额外的信息,如大小,修改日期名称

 CloudStorageAccount backupStorageAccount = CloudStorageAccount.Parse(YOUR_CON_STRING); var backupBlobClient = backupStorageAccount.CreateCloudBlobClient(); var backupContainer = backupBlobClient.GetContainerReference("CONTAINER"); var blobs = backupContainer.ListBlobs().OfType().ToList(); foreach (var blob in blobs) { string bName = blob.Name; long bSize = blob.Properties.Length; string bModifiedOn = blob.Properties.LastModified.ToString(); } 

您也可以按名称下载特定文件。

  // Download file by Name string fileName = "Your_file_name"; CloudBlockBlob blobFile = backupContainer.GetBlockBlobReference(fileName); blobFile.DownloadToFile(@"d:\"+ fileName, System.IO.FileMode.Create); 

您可以访问BlobProperties以获取名称:

 foreach (object o in list) { BlobProperties bp = o as BlobProperties; if (bp != null) { BlobProperties p = _Container.GetBlobProperties(bp.Name); var name = p.Name; // get the name } }