【问题标题】:Deleting entire directories using azure blob storage api使用 azure blob storage api 删除整个目录
【发布时间】:2016-08-06 05:48:46
【问题描述】:

我正在以下列方式使用 Azure 对象存储:

我有一个容器,在它下面的目录结构中有许多 blob。

我正在使用 Azure Blob Storage api 来管理它。

  • 有没有办法删除整个目录?
  • 真的需要把它下面的所有blob都列出来,然后一一删除吗?
  • 是否有一种解决方法,例如删除具有相同 uri 前缀的所有 blob(同样,不列出它们,然后一一删除)?

【问题讨论】:

    标签: azure azure-blob-storage


    【解决方案1】:

    我不知道是否有新的解决方案,但我们使用https://msdn.microsoft.com/library/microsoft.windowsazure.storage.blob.cloudblobcontainer.listblobs.aspx 做到了 - 如果我们看到 Fiddler 发生了什么,则只会返回带前缀的 blob。请看看这是否适合你:

    static void GetBlobsByPrefix(string Container, string Prefix)
        {
            if (!string.IsNullOrEmpty(Prefix))
            {
                var _Container = GetBlobContainer(Container);
                var _Blobs = _Container.ListBlobs(Prefix, true);
                foreach (IListBlobItem blob in _Blobs)
                {
    
                     ....
                }
            }
        }
    
        static CloudBlobContainer GetBlobContainer(string container)
        {           
    
            CloudStorageAccount _StorageAccount = CloudStorageAccount.Parse(
                CloudConfigurationManager.GetSetting("rus_AzureStorageConnectionString"));
    
            CloudBlobClient _BlobClient = _StorageAccount.CreateCloudBlobClient();
            CloudBlobContainer _Container = _BlobClient.GetContainerReference(container);
            return _Container;
        }
    

    【讨论】:

    • 谢谢,但我一直在寻找一种解决方案,它不涉及列出 blob,然后逐个检查并删除它们。
    【解决方案2】:

    您可以删除容器,您的所有 blob 都将被删除。 Azure 存储上的容器充当 Blob 的“文件夹”。

    【讨论】:

    • 在我们目前的存储结构中,只有一个容器,我不想删除它下面的所有文件夹。在更改结构并使每个主文件夹成为容器之前,我想确保目前无法以可扩展的方式删除文件夹中的所有 blob(或者至少将有效删除的责任转移到天蓝色)。
    猜你喜欢
    • 1970-01-01
    • 2020-03-12
    • 2017-08-22
    • 2016-09-30
    • 2022-01-02
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多