public async Task <ActionResult <Tour> > PostTour([FromForm] TourPostDTO model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } //string uniqueFileName = ProcessUploadedFile(model); string uniqueFileName = await _AzureFileService.ProcessTourImgAsync(model); Tour tour = new Tour { City = model.City, Coordinates = model.Coordinates, Country = model.Country, Latitude = model.Latitude, Longitude = model.Longitude, Province = model.Province, Region = model.Region, Type = model.Type, Name = model.Name, Image = uniqueFileName, Description = model.Description }; _context.Tours.Add(tour); await _context.SaveChangesAsync(); return(CreatedAtAction("GetTour", new { id = tour.Id }, tour)); }
private string ProcessUploadedFile(TourPostDTO model) { string uniqueFileName = null; if (model.Image != null) { string uploadsFolder = Path.Combine(webHostEnvironment.WebRootPath, "TourImages"); uniqueFileName = Guid.NewGuid().ToString() + "_" + model.Image.FileName; string filePath = Path.Combine(uploadsFolder, uniqueFileName); using (var fileStream = new FileStream(filePath, FileMode.Create)) { model.Image.CopyTo(fileStream); } } return(uniqueFileName); }
//tours images public async Task <string> ProcessTourImgAsync(TourPostDTO model) { string uniqueFileName = null; if (model.Image != null) { uniqueFileName = Guid.NewGuid().ToString() + "_" + model.Image.FileName; // Retrieve storage account from connection string. CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(StorageConnectionString); // Create the blob client. CloudBlobClient blobClient = cloudStorageAccount.CreateCloudBlobClient(); // Retrieve a reference to a container. CloudBlobContainer container = blobClient.GetContainerReference("tourimages"); // This also does not make a service call; it only creates a local object. CloudBlockBlob blockBlob = container.GetBlockBlobReference(uniqueFileName); await using (var data = model.Image.OpenReadStream()) { await blockBlob.UploadFromStreamAsync(data); } } return(uniqueFileName); }