【问题标题】:List down uri of all blobs in azure container列出 azure 容器中所有 blob 的 uri
【发布时间】:2019-01-18 13:07:02
【问题描述】:

我知道我们可以使用以下内容来获取 Azure 存储容器中的 blob 列表:

var list = fileContainer.ListBlobs(useFlatBlobListing: true);
List<string> blobNames = list.OfType<CloudBlockBlob>().Select(b => b.Name).ToList();

那么如何获取所有 blob 的 uri 列表?

我尝试了以下但失败 cos 得到错误:

List<string> blobNamesUri = list.OfType<CloudBlockBlob>().Select(b => b.Name.Uri.ToString()).ToList();

【问题讨论】:

    标签: c# .net azure azure-storage azure-blob-storage


    【解决方案1】:

    问题位于b.Name.Uri.ToString(),Uri 是 CloudBlockBlob 的属性,而不是 Name。您应该像这样删除名称b.Uri.ToString()。您可能受到参数名称blobNamesUri 的影响。

    【讨论】:

    • 我试过你的方法,但仍然有错误。错误与“.Select”功能有关。
    • @Coolguy 你有什么具体的信息吗?这种方法对我没有错误。
    【解决方案2】:

    我给你写了一个demo,你可以直接使用。

    给你:

        public static List<V> listAllBlobs<T,V>(Expression<Func<T, V>> expression, string containerName)
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=xxxx;AccountKey=xxxxx;BlobEndpoint=https://xxxxx.blob.core.windows.net/;QueueEndpoint=https://xxxxx.queue.core.windows.net/;TableEndpoint=https://xxxxxx.table.core.windows.net/;FileEndpoint=https://xxxxx.file.core.windows.net/;");
    
            CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
    
            CloudBlobContainer container = cloudBlobClient.GetContainerReference(containerName);
            container.CreateIfNotExists();
            var list = container.ListBlobs(useFlatBlobListing: true);
    
            List<V> data = list.OfType<T>().Select(expression.Compile()).ToList();
            return data;
        }
    

    用法和截图:

    【讨论】:

      猜你喜欢
      • 2021-08-31
      • 2018-06-10
      • 1970-01-01
      • 2019-07-28
      • 2021-04-24
      • 2022-12-17
      • 2015-11-10
      • 2015-12-07
      • 2016-09-01
      相关资源
      最近更新 更多