public async Task <IActionResult> PostImage(ImageModel model) { try { if (string.IsNullOrEmpty(model.Description) || string.IsNullOrWhiteSpace(model.Description)) { TempData["error"] = "Image description is required"; return(RedirectToAction("ImageUpload")); } var uploadss = Path.Combine(_env.WebRootPath, "images"); if (model.Pictures != null) { foreach (var pics in model.Pictures) { var maxSize = 500 * 1024; if (pics.Length > maxSize) { TempData["error"] = "Image size restricted to 500KB"; return(RedirectToAction("ImageUpload")); } string fileExt = System.IO.Path.GetExtension(pics.FileName).ToLower(); if (pics.ContentType == "image/jpeg" || pics.ContentType == "image/png") { var fileName = Guid.NewGuid().ToString().Replace("-", "") + Path.GetExtension(pics.FileName).ToString(); using (var fileStream = new FileStream(Path.Combine(uploadss, fileName), FileMode.Create)) { await pics.CopyToAsync(fileStream); } var imagepath = Path.Combine(uploadss, fileName); string S3Bucket = Configuration[Constants.Keys.S3BucketName]; string AWSProfileName = Configuration[Constants.Keys.AWSProfileName]; //send to s3 await UploadFileS3.SendS3(AWSProfileName, imagepath, S3Bucket, model.Description); long filesize = pics.Length / 1024; var desc = model.Description; var modelPost = new ImageModel { FileSize = filesize, Description = model.Description.Trim(), FileType = pics.ContentType.ToLower(), Path = fileName.Trim() }; string fullpath = Path.Combine(uploadss, fileName); var client = _httpClientFactory.CreateClient(Constants.ClientWithToken); HttpResponseMessage response = await client.PostAsJsonAsync(Constants.Routes.PostImage, modelPost); if (response.IsSuccessStatusCode) { var UrireturnUrl = response.Headers.Location; var resp = await response.Content.ReadAsAsync <ImageModel>(); } else { TempData["error"] = "An error occurred. Kindly try again"; return(RedirectToAction("ImageUpload")); } } else { TempData["error"] = "Image type restricted to PNG or JPEG"; return(RedirectToAction("ImageUpload")); } } TempData["success"] = "Image saved successfully"; return(RedirectToAction("Index")); } else { TempData["error"] = "Image is required"; return(RedirectToAction("ImageUpload")); } TempData["error"] = "An error occurred. Kindly try again"; return(RedirectToAction("ImageUpload")); } catch (Exception ex) { Log.Error("An error Occurred " + ex); TempData["error"] = "Oops. An error occurred. We are looking into it. Kindly try again. "; return(RedirectToAction("ImageUpload")); } }