使用 Azure.Storage.Blobs 删除目录中的所有 Blob

Tho*_*ato 1 azure-storage azure-blob-storage

我正在将我的代码重构为 Azure.Storage.Blobs,因为 windowsAzure.Storage 正在贬值。但是我还没有找到删除“directoty”的方法。在旧图书馆你可以这样做:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(Config.StorageConnStr);
CloudStorageAccount account = CloudStorageAccount.Parse(StorageConnection);
CloudBlobClient blobClient = account.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(ExportContainerName);
CloudBlobDirectory folder = container.GetDirectoryReference(jobid.ToLower());
var blobs = folder.ListBlobs();

foreach (var blob in blobs)
{
    ((CloudBlob)blob).DeleteIfExists();
}
Run Code Online (Sandbox Code Playgroud)

但我在新包中看不到任何类似的代码。有什么指点吗?

Fra*_*age 5

您可以使用GetBlobsByHierarchy方法列出目录中的 Blob,然后将其删除。

请参考我的代码:

            BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
            BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);
            var resultSegment = containerClient.GetBlobsByHierarchy(BlobTraits.None, BlobStates.None, "/", "frankfolder/").AsPages(default, 100);
            
            foreach (Azure.Page<BlobHierarchyItem> blobPage in resultSegment)
            {
                foreach (BlobHierarchyItem blobhierarchyItem in blobPage.Values)
                {
                    Console.WriteLine("Blob name: {0}", blobhierarchyItem.Blob.Name);
                    containerClient.DeleteBlob(blobhierarchyItem.Blob.Name);
                }
            }
Run Code Online (Sandbox Code Playgroud)