我知道我们可以使用以下内容获取Azure存储容器中的blob列表:
var list = fileContainer.ListBlobs(useFlatBlobListing: true);
List<string> blobNames = list.OfType<CloudBlockBlob>().Select(b => b.Name).ToList();
然后如何获取所有斑点的uri列表?
我尝试了以下操作,但失败的原因是错误:
List<string> blobNamesUri = list.OfType<CloudBlockBlob>().Select(b => b.Name.Uri.ToString()).ToList();
答案 0 :(得分:1)
问题位于b.Name.Uri.ToString()
,Uri是CloudBlockBlob的属性,而不是Name。您应该像这样b.Uri.ToString()
删除名称。您的参数名称blobNamesUri
可能会影响您。
答案 1 :(得分:0)
我为您编写了一个演示,您可以直接使用它。
您在这里:
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;
}
用法和屏幕截图: