AzureBlobDBRepository.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using HaBookCms.AzureStorage.AzureBlob.Container;
  2. using HaBookCms.AzureStorage.AzureBlob.Interfaces;
  3. using HaBookCms.AzureStorage.AzureBlob.Models;
  4. using HaBookCms.AzureStorage.ServiceExtension;
  5. using Microsoft.AspNetCore.Http;
  6. using Microsoft.Extensions.Options;
  7. using Microsoft.WindowsAzure.Storage;
  8. using Microsoft.WindowsAzure.Storage.Blob;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.IO;
  12. using System.Net.Http.Headers;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. namespace HaBookCms.AzureStorage.AzureBlob.Implements
  16. {
  17. public class AzureBlobDBRepository : IAzureBlobDBRepository
  18. {
  19. public CloudBlobClient blobClient;
  20. public CloudBlobContainer blobContainer;
  21. public AzureBlobDBRepository(AzureStorageOptions options)
  22. {
  23. blobClient = BlobClientSingleton.getInstance(options.ConnectionString).GetBlobClient();
  24. }
  25. public AzureBlobDBRepository()
  26. {
  27. // _connectionString = BaseConfigModel.Configuration["AppSettings:Azure:TableStorageConnection"];
  28. }
  29. private async Task InitializeBlob(string container)
  30. {
  31. if (blobContainer == null)
  32. {
  33. // Type t = typeof(T);
  34. blobContainer = blobClient.GetContainerReference(container);
  35. await blobContainer.CreateIfNotExistsAsync();
  36. }
  37. //await UploadFiles(null, new FileContainer() );
  38. }
  39. public async Task<List<AzureBlobModel>> UploadFiles(IFormFile[] file, BlobContainer container)
  40. {
  41. await InitializeBlob(container.Container);
  42. List<AzureBlobModel> list = new List<AzureBlobModel>();
  43. foreach (IFormFile f in file)
  44. {
  45. var parsedContentDisposition = ContentDispositionHeaderValue.Parse(f.ContentDisposition);
  46. var filename = Path.Combine(parsedContentDisposition.FileName.Trim('"'));
  47. var blockBlob = blobContainer.GetBlockBlobReference(f.FileName );
  48. await blockBlob.UploadFromStreamAsync(f.OpenReadStream());
  49. AzureBlobModel model = new AzureBlobModel(f, container.Container);
  50. list.Add(model);
  51. }
  52. return list;
  53. }
  54. }
  55. }