public async Task <IActionResult> SetProfilePicture(List <IFormFile> files) { var uid = User.Claims.FirstOrDefault(c => c.Type == Helpers.Constants.Strings.JwtClaimIdentifiers.Id)?.Value; var user = await _userManager.Users.Include(o => o.ProfilePicture).FirstOrDefaultAsync(p => p.Id == uid); long size = files.Sum(f => f.Length); var formFile = files[0]; if (!formFile.IsImage()) { return(BadRequest()); } if (user.ProfilePicture != null) { var res = await _usersRepository.RemoveProfilePicture(user); if (!res) { return(Conflict()); } //remove picture from data context } if (formFile.Length > 0) { var filename = ContentDispositionHeaderValue .Parse(formFile.ContentDisposition) .FileName .TrimStart().ToString(); filename = _hostingEnvironment.WebRootPath + $@"\uploads" + $@"\{formFile.FileName}"; size += formFile.Length; using (var fs = System.IO.File.Create(filename)) { await formFile.CopyToAsync(fs); fs.Flush(); }//these code snippets saves the uploaded files to the project directory var imageId = Guid.NewGuid().ToString() + Path.GetExtension(filename); await _uploadService.PutObjectToStorage(imageId.ToString(), filename);//this is the method to upload saved file to S3 var res = await _usersRepository.AddProfilePicture(user, new ProfilePicture() { Id = imageId }); if (!res) { return(Conflict()); } System.IO.File.Delete(filename); return(Ok(new ImageToReturnDto() { ImageId = imageId })); } return(BadRequest()); }