AzureStorageBlobExtensions.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. using System.Threading.Tasks;
  2. using Azure.Storage;
  3. using Azure.Storage.Blobs;
  4. using Azure.Storage.Blobs.Models;
  5. namespace TEAMModelOS.SDK.DI
  6. {
  7. public static class AzureStorageBlobExtensions
  8. {
  9. /// <summary>
  10. /// 取得指定前置詞的 Blob 名稱的總大小(Bytes),例如指定目錄名稱為前置詞
  11. /// </summary>
  12. /// <param name="prefix">篩選開頭名稱,Null代表容器總大小</param>
  13. /// <returns>總大小(Bytes),如果為Null代表查無前置詞或者發生錯誤</returns>
  14. public static async Task<long?> GetBlobsSize(this BlobContainerClient client, string prefix = null)
  15. {
  16. long? size = 0;
  17. try
  18. {
  19. await foreach (var item in client.GetBlobsAsync(BlobTraits.None, BlobStates.None, prefix))
  20. {
  21. size += item.Properties.ContentLength;
  22. };
  23. return size;
  24. }
  25. catch
  26. {
  27. return null;
  28. }
  29. }
  30. }
  31. }