簡體   English   中英

刪除 Azure Blob 存儲容器內的文件夾

[英]Delete folder(s) inside Azure Blob storage container

我有一個名為“pictures”的容器,里面有一些名為“Folder1”、“Folder2”的文件夾。 所以我的 blob 文件將像這樣處理http://optimus.blob.core.windows.net/pictures/Folder1/IMG123.png 使用下面的 C# 代碼刪除文件夾中的文件,

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(*AzureConnectionString*);

CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

CloudBlobContainer container = blobClient.GetContainerReference("pictures");

var blobs = container.ListBlobs("Folder1", true);
foreach (var blob in blobs)
{
  container.GetBlockBlobReference(((CloudBlockBlob)blob).Name).DeleteIfExists();
}

刪除“Folder1”中的所有文件后,它將為空。 我正在嘗試刪除空文件夾,但無法找到方法。 是否可以刪除文件夾? 任何幫助都感激不盡。 提前致謝。

對於 Azure Blob 存儲,實際上並沒有“文件夾”對象。 “文件夾”實際上只是 blob 名稱前綴 - 用於分隔“文件夾”的“/”字符是 blob 命名中的約定,而不是要求。 因此,您不必擔心 - 只要沒有帶有“Folder1”前綴的 blob,就可以了。

在任何 blob 容器下,都不存在真正的文件夾或目錄。 它們是虛擬目錄,用於管理容器下 blob 的文件夾結構,如果刪除了具有任何虛擬目錄或文件夾的所有 blob,則不存在此類文件夾。 它是文件夾結構的所有邏輯表示,您可以忽略任何容器下的文件夾。

但是對於容器,如果要清理整個容器,則需要在刪除其 blob 后手動刪除容器。

嘗試使用適用於 .NET 的 Azure Blob 存儲客戶端庫 v12。

            BlobBatchClient batch = service.GetBlobBatchClient();
            await batch.DeleteBlobsAsync(new Uri[] { valid.Uri, invalid.Uri });

此處提供示例https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/storage/Azure.Storage.Blobs.Batch/samples/Sample03b_BatchingAsync.cs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM