Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }