using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Configuration; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Blob; namespace Diligent.WebAPI.Business.Services { public class FileService : IFileService { private readonly IConfiguration _configuration; private readonly DatabaseContext _context; public FileService(IConfiguration configuration, DatabaseContext context) { _configuration = configuration; _context = context; } public async Task GetCV(string fileName) { await using MemoryStream memoryStream = new(); var cloudBlockBlob = GetCloudBlockBlob(fileName); await cloudBlockBlob.DownloadToStreamAsync(memoryStream); Stream blobStream = cloudBlockBlob.OpenReadAsync().Result; return ConvertToBase64(blobStream); } public async Task UploadCV(string fileName,IFormFile file) { var cloudBlockBlob = GetCloudBlockBlob(fileName); await using var data = file.OpenReadStream(); await cloudBlockBlob.UploadFromStreamAsync(data); } private CloudBlockBlob GetCloudBlockBlob(string fileName) { string blobstorageconnection = _configuration.GetValue("BlobConnectionString"); CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(blobstorageconnection); CloudBlobClient blobClient = cloudStorageAccount.CreateCloudBlobClient(); CloudBlobContainer container = blobClient.GetContainerReference( _configuration.GetValue("BlobContainerName")); return container.GetBlockBlobReference(fileName); } private static string ConvertToBase64(Stream stream) { byte[] bytes; using (var memoryStream = new MemoryStream()) { stream.CopyTo(memoryStream); bytes = memoryStream.ToArray(); } string base64 = Convert.ToBase64String(bytes); return base64; } public async Task> GetAll() { return await _context.Files.ToListAsync(); } } }