我有一个名为&#34;图片&#34; 的容器,并且有一些名为&#34; Folder1&#34;,&#34; Folder2&#34; < / em>在里面。因此,我的blob文件将像&#34; http://optimus.blob.core.windows.net/pictures/Folder1/IMG123.png&#34; 一样进行处理。使用下面的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();
}
删除&#34; Folder1&#34; 中的所有文件后,它将为空。我试图删除空文件夹,但无法找到方法。是否可以删除文件夹?任何帮助都感激不尽。提前谢谢。
答案 0 :(得分:6)
对于Azure Blob存储,实际上并没有一个&#39;文件夹&#39;宾语。 &#39;夹&#39;实际上只是blob名称前缀 - &#39; /&#39;用于分隔文件夹的字符&#39;是blob命名的约定,而不是要求。所以,你不必担心它 - 只要没有&#34; Folder1&#34;前缀,那你很好。
答案 1 :(得分:2)
在任何blob容器下,都没有真正的文件夹或目录。它们是用于管理容器下blob的文件夹结构的虚拟目录,如果删除了包含任何虚拟目录或文件夹的所有blob,则不存在此类文件夹。它是文件夹结构的所有逻辑表示,您可以忽略任何容器下的文件夹。
但是当涉及到容器时,如果要清理整个容器,则需要在删除其blob后手动删除容器。
答案 2 :(得分:0)
尝试将Azure Blob存储客户端库v12用于.NET。
BlobBatchClient batch = service.GetBlobBatchClient();
await batch.DeleteBlobsAsync(new Uri[] { valid.Uri, invalid.Uri });