public async Task <IActionResult> UploadImageAsync(string imageName, IFormFile imageFile, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); if (imageName == null) { var error = ErrorResponsesService.BodyIsMissing(nameof(imageName)); return(BadRequest(error)); } if (imageFile == null) { var error = ErrorResponsesService.BodyIsMissing(nameof(imageFile)); return(BadRequest(error)); } var extension = Path.GetExtension(imageFile.FileName); var path = $"{ImageDirectory}{imageName}{extension}"; var stream = imageFile.OpenReadStream(); if (ImageValidationService.IsValidLength(imageFile.Length) && ImageValidationService.IsImage(stream)) { var webDirectoryPath = $"{hostingEnvironment.WebRootPath}{ImageDirectory}"; if (!Directory.Exists(webDirectoryPath)) { Directory.CreateDirectory(webDirectoryPath); } using (var fileStream = new FileStream($"{hostingEnvironment.WebRootPath}{path}", FileMode.Create)) { await imageFile.CopyToAsync(fileStream, cancellationToken).ConfigureAwait(false); } } else { var error = ErrorResponsesService.InvalidImageData(nameof(imageFile)); return(BadRequest(error)); } var clientImageInfo = new ClientModels.Image { Url = path }; return(Ok(clientImageInfo)); }
public async Task <IActionResult> UploadImageAsync(IFormFile imageFile, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); if (imageFile == null) { var error = ErrorResponsesService.BodyIsMissing(nameof(imageFile)); return(BadRequest(error)); } var imageId = Guid.NewGuid(); var imageName = imageId.ToString(); var extension = Path.GetExtension(imageFile.FileName); var path = $"{ImageDirectory}{imageName}{extension}"; var stream = imageFile.OpenReadStream(); ClientModels.Secrets.Secret clientSecret; if (ImageValidationService.IsValidLength(imageFile.Length) && ImageValidationService.IsImage(stream)) { var webDirectoryPath = $"{hostingEnvironment.WebRootPath}{ImageDirectory}"; if (!Directory.Exists(webDirectoryPath)) { Directory.CreateDirectory(webDirectoryPath); } using (var fileStream = new FileStream($"{hostingEnvironment.WebRootPath}{path}", FileMode.Create)) { await imageFile.CopyToAsync(fileStream, cancellationToken).ConfigureAwait(false); var creationInfo = new SecretCreationInfo(path, string.Empty); var modelSecret = await repository.CreateAsync(creationInfo, cancellationToken).ConfigureAwait(false); clientSecret = Converter.SecretConverter.Convert(modelSecret); } } else { var error = ErrorResponsesService.InvalidImageData(nameof(imageFile)); return(BadRequest(error)); } return(Ok(clientSecret)); }