【发布时间】:2021-06-13 11:35:41
【问题描述】:
我需要访问 blob 存储并获取文件大小和文件路径报告。我需要下载该报告。我在 blob 存储中的文件存储结构是有四个命名文件夹。然后对于每个用户都有一个自动生成的 GUID 文件夹。文件夹里面有文件。我需要获取文件大小和文件路径(或文件名)的列表。最好的方法是什么?
【问题讨论】:
标签: c# azure azure-blob-storage
我需要访问 blob 存储并获取文件大小和文件路径报告。我需要下载该报告。我在 blob 存储中的文件存储结构是有四个命名文件夹。然后对于每个用户都有一个自动生成的 GUID 文件夹。文件夹里面有文件。我需要获取文件大小和文件路径(或文件名)的列表。最好的方法是什么?
【问题讨论】:
标签: c# azure azure-blob-storage
您可以使用prefix 获取文件,并使用GetBlobsAsync 获取ContentLength(以字节为单位的大小)的文件大小。
例如,将前缀设置为“目录A”时,您将获得目录A中的所有文件。存储 URL 类似于 https://myaccount.blob.core.windows.net/ContainerName/directoryA/filename。
private static async Task ListBlobsFlatListing(BlobContainerClient blobContainerClient,
int? segmentSize, string yourPrefix)
{
try
{
// Call the listing operation and return pages of the specified size.
var resultSegment = blobContainerClient.GetBlobsAsync(prefix: yourPrefix)
.AsPages(default, segmentSize);
// Enumerate the blobs returned for each page.
await foreach (Azure.Page<BlobItem> blobPage in resultSegment)
{
foreach (BlobItem blobItem in blobPage.Values)
{
Console.WriteLine("Blob name: {0}", blobItem.Name);
Console.WriteLine("Blob content length: {0}", blobItem.Properties.ContentLength);
}
Console.WriteLine();
}
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
throw;
}
}
你可以用这个方法把你得到的ContentLength转换成MB:
static double ConvertBytesToMegabytes(long bytes)
{
return (bytes / 1024f) / 1024f;
}
以上是基于存储v12。如果使用旧版本(v11),可以参考here。
【讨论】: