Search code examples
azureazure-storageazure-blob-storage

How to delete a folder within an Azure blob container


I have a blob container in Azure called pictures that has various folders within it (see snapshot below):

enter image description here

I'm trying to delete the folders titled users and uploads shown in the snapshot, but I keep the error: Failed to delete blob pictures/uploads/. Error: The specified blob does not exist. Could anyone shed light on how I can delete those two folders? I haven't been able to uncover anything meaningful via Googling this issue.

Note: ask me for more information in case you need it


Solution

  • Windows Azure Blob Storage does not have the concept of folders. The hierarchy is very simple: storage account > container > blob. In fact, removing a particular folder is removing all the blobs which start with the folder name. You can write the simple code as below to delete your folders:

    CloudStorageAccount storageAccount = CloudStorageAccount.Parse("your storage account");
    CloudBlobContainer container = storageAccount.CreateCloudBlobClient().GetContainerReference("pictures");
    foreach (IListBlobItem blob in container.GetDirectoryReference("users").ListBlobs(true))
    {
        if (blob.GetType() == typeof(CloudBlob) || blob.GetType().BaseType == typeof(CloudBlob))
        {
            ((CloudBlob)blob).DeleteIfExists();
        }
    }
    

    container.GetDirectoryReference("users").ListBlobs(true) lists the blobs start with "users" within the "picture" container, you can then delete them individually. To delete other folders, you just need to specify like this GetDirectoryReference("your folder name").