use*_*943 3 c# azure azure-blob-storage asp.net-core
我正在使用Azure Blob存储来存储我的一些文件。我将它们归类在不同的文件夹中。
到目前为止,我可以使用以下命令获取容器中所有斑点的列表:
public async Task<List<Uri>> GetFullBlobsAsync()
{
var blobList = await Container.ListBlobsSegmentedAsync(string.Empty, true, BlobListingDetails.None, int.MaxValue, null, null, null);
return (from blob in blobList.Results where !blob.Uri.Segments.LastOrDefault().EndsWith("-thumb") select blob.Uri).ToList();
}
Run Code Online (Sandbox Code Playgroud)
但是,如何只获取文件夹,然后才能获取该特定子目录中的文件?
这是在ASP.NET Core上
编辑:
容器结构如下所示:
Container
|
|
____Folder 1
| ____File 1
| ____File 2
|
|
____Folder 2
____File 3
____File 4
____File 5
____File 6
Run Code Online (Sandbox Code Playgroud)
而不是传递的true是值的布尔useFlatBlobListing参数作为记录在这里传递false。这只会给您容器中的顶级子文件夹和Blob
useFlatBlobListing(布尔)
一个布尔值,它指定是按虚拟目录在平面清单中列出Blob,还是按层次结构列出Blob。
为了进一步减少设置以仅列出顶级文件夹,您可以使用 OfType
public async Task<List<Cloud?Blob?Directory>> GetFullBlobsAsync()
{
var blobList = await Container.ListBlobsSegmentedAsync(string.Empty, false, BlobListingDetails.None, int.MaxValue, null, null, null);
return (from blob in blobList
.Results
.OfType<CloudBlobDirectory>()
select blob).ToList();
}
Run Code Online (Sandbox Code Playgroud)
这将返回Cloud?Blob?Directory实例的集合。它们又提供了ListBlobsSegmentedAsync方法,因此您可以使用该方法将blob放入该目录中。
顺便说一句,既然您没有真正使用细分,为什么不使用ListBlobs比ListBlobsSegmentedAsync?更简单的方法呢?
| 归档时间: |
|
| 查看次数: |
4659 次 |
| 最近记录: |