public async Task <UploadImageResult> UploadImage(MemoryStream memoryStream, Guid mapId) { var image = new Image(); using (var md5 = MD5.Create()) { image.ImageKey = BitConverter.ToString(md5.ComputeHash(memoryStream)).Replace("-", "").ToLower(); } memoryStream.Position = 0; image.Location = await _storageAdapter.UploadFile($"{image.Id}.jpg", memoryStream, _storageContainerName); if (string.IsNullOrEmpty(image.Location)) { image.Status = ImageStatus.Errored; await _imagesRepository.InsertImage(image); return(UploadFailureResult()); } if (!await _imagesRepository.InsertImage(image)) { return(UploadFailureResult()); } image.Location = await _storageAdapter.GetFileUriWithKey($"{image.Id}.jpg", _storageContainerName); if (string.IsNullOrEmpty(image.Location)) { await _imagesRepository.UpdateImageStatus(image.Id, ImageStatus.Errored); return(UploadFailureResult()); } if (!await _queueAdapter.SendMessage(new ImageProcessRequest(image, mapId), "single-image")) { await _imagesRepository.UpdateImageStatus(image.Id, ImageStatus.Errored); return(UploadFailureResult()); } if (!await _imagesRepository.UpdateImageStatus(image.Id, ImageStatus.AwaitingProcessing)) { return(UploadFailureResult()); } return(UploadSuccessResult(image)); }
public MovieDTO EditMovieImage(long id, byte[] imageBytes) { Movie movieToEdit = _moviesRepository.GetSingleMovie(id).FirstOrDefault(); if (movieToEdit == null) { throw new System.Exception("Object not found"); } MovieImage editedImage = _imagesRepository.getImages().Where(p => p.MovieId == id).FirstOrDefault(); if (editedImage == null) { MovieImage imageToInsert = new MovieImage() { MovieId = id, Image = imageBytes }; editedImage = _imagesRepository.InsertImage(imageToInsert); } else { MovieImage imageToEdit = movieToEdit.Image; imageToEdit.Image = imageBytes; editedImage = _imagesRepository.UpdateImage(imageToEdit); } movieToEdit.Image = editedImage; return(_mapper.Map <MovieDTO>(_moviesRepository.PatchMovie(movieToEdit))); }
public void InsertImage(List <IFormFile> files, string productId) { if (files != null && files.Count > 0) { string webRootPath = _hostingEnvironment.WebRootPath; string newPath = Path.Combine(@"F:\Upload", productId); if (!Directory.Exists(productId)) { Directory.CreateDirectory(newPath); } foreach (IFormFile item in files) { if (item.Length > 0) { string fileName = ContentDispositionHeaderValue.Parse(item.ContentDisposition).FileName.Trim('"'); string reversed = new String(fileName.ToCharArray().Reverse().ToArray()); var extension = reversed.Split("."); char[] fileNameArray = extension[0].ToCharArray(); Array.Reverse(fileNameArray); var name = Guid.NewGuid(); fileName = name + "." + String.Join("", fileNameArray); string fullPath = Path.Combine(newPath, fileName); using (var stream = new FileStream(fullPath, FileMode.Create)) { item.CopyTo(stream); } Image image = new Image(); image.Id = Guid.NewGuid(); image.ModifyDate = DateTime.Now; image.CreatedDate = DateTime.Now; image.Path = fullPath; image.Name = 0.ToString(); image.ProductId = Guid.Parse(productId); _reponsitory.InsertImage(image); } } _unitOfWork.Commit(); } }