Obtenir la liste des noms des fichiers blob Azure dans un conteneur?

j'ai besoin d'énumérer les noms des fichiers Azure Blob. Actuellement, je suis en mesure de lister tous les fichiers avec URL, mais j'ai juste besoin de la liste des noms. Je veux éviter de l'analyse des noms. Pouvez-vous voir mon code et guide ci-dessous:

CloudStorageAccount backupStorageAccount = CloudStorageAccount.Parse(blobConectionString);

var backupBlobClient = backupStorageAccount.CreateCloudBlobClient();
var backupContainer = backupBlobClient.GetContainerReference(container);

var list = backupContainer.ListBlobs();
20
demandé sur abatishchev 2014-05-06 07:31:42

5 réponses

si vous utilisez Windows Azure Storage 4.3.0 , essayez ce code.

List<string> blobNames = list.OfType<CloudBlockBlob>().Select(b => b.Name).ToList();
27
répondu feltocraig 2014-11-14 15:50:03

Voici une autre façon de le faire:

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<string>();

foreach (var blob in blobs) {
  var blobFileName = blob.Uri.Segments.Last();
  listOfFileNames.Add(blobFileName); 
}

return listOfFileNames;

Source: comment charger récursivement des fichiers Blob D'Azur?

13
répondu mik-t 2017-05-23 11:54:47

réponse complète avec détails.

        // 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<string> blobNames = list.OfType<CloudBlockBlob>().Select(b => b.Name).ToList();
4
répondu Apollo 2018-02-20 16:02:36

nous pouvons obtenir des informations supplémentaires comme Taille, Date de modification et nom .

CloudStorageAccount backupStorageAccount = CloudStorageAccount.Parse(YOUR_CON_STRING);

var backupBlobClient = backupStorageAccount.CreateCloudBlobClient();
var backupContainer = backupBlobClient.GetContainerReference("CONTAINER");


var blobs = backupContainer.ListBlobs().OfType<CloudBlockBlob>().ToList();

foreach (var blob in blobs)
{
    string bName = blob.Name;
    long bSize = blob.Properties.Length;
    string bModifiedOn = blob.Properties.LastModified.ToString();        
}

vous pouvez Aussi télécharger un fichier spécifique par Nom.

 // Download file by Name
 string fileName = "Your_file_name";
 CloudBlockBlob blobFile = backupContainer.GetBlockBlobReference(fileName);
 blobFile.DownloadToFile(@"d:\"+ fileName, System.IO.FileMode.Create);
3
répondu Vignesh Raja 2018-03-07 21:41:00

vous pouvez accéder au BlobProperties pour obtenir le nom:

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
    }
}
2
répondu Brendan Green 2014-05-06 03:43:27