public ActionResult Gallery(AddGalleryViewModel model, HttpPostedFileBase imgUp, int id) { if (ModelState.IsValid) { if (imgUp != null && imgUp.IsImage()) { var gallery = new ProductGalleries { ProductId = id, GalleryTitle = model.GalleryTitle, ImageName = Guid.NewGuid() + Path.GetExtension(imgUp.FileName) }; imgUp.SaveAs(Server.MapPath("/Images/ProductImages/" + gallery.ImageName)); var img = new ImageResizer(); img.Resize(Server.MapPath("/Images/ProductImages/" + gallery.ImageName), Server.MapPath("/Images/ProductImages/Resized/" + gallery.ImageName)); db.ProductGalleriesRepository.Insert(gallery); db.Save(); RedirectToAction("Gallery", new { id = id }); } else { return(Redirect("/Admin/Products/Gallery/" + id + "?img=error")); } } return(RedirectToAction("Gallery", new { id = id })); }
public JsonResult AddGallery(AddGalleryViewModel viewModel) { try { _galleryService.Create(ModelMapper.ConvertToModel(viewModel)); return(Json(true)); } catch (Exception) { return(Json(false)); } }
public async Task <IActionResult> AddGallery(AddGalleryViewModel model) { if (ModelState.IsValid) { Gallery gallery = new Gallery() { Id = Guid.NewGuid(), GalleryTitle = model.GalleryTitle, GalleryDescription = model.GalleryDescription, GalleryDate = DateTime.Now }; await websiteDB.Galleries.AddAsync(gallery); await websiteDB.SaveChangesAsync(); return(RedirectToAction("Gallery", "Home", new { galleryId = gallery.Id })); } return(View(model)); }
public async Task <IActionResult> Add(AddGalleryViewModel model) { if (!await articleService.ExistsAsync(model.ArticleId)) { TempData.AddErrorMessage("Invalid article."); return(RedirectToAction("Index", "Home")); } if (!ModelState.IsValid) { return(View(model)); } var galleryId = await galleryService.AddAsync(model.Name, model.PhotographerName, model.ArticleId); if (galleryId == 0) { TempData.AddErrorMessage("Save failed."); return(RedirectToAction("Index", "Home")); } return(RedirectToAction(nameof(AddPictures), galleryId)); }
public async Task <IActionResult> AddGallery(AddGalleryViewModel model, IFormFile previewImage) { // Проверяем, чтобы входящий файл был не NULL и имел допустимый размер в мегабайтах if (previewImage != null && previewImage.Length > 2097152) { ModelState.AddModelError("GalleryPreviewImage", $"Файл \"{previewImage.FileName}\" превышает установленный лимит 2MB."); } if (ModelState.IsValid) { // Если размер входного файла больше 0, заходим в тело условия if (previewImage != null && previewImage.Length > 0) { // Создаем новый объект класса FileInfo из полученного изображения для дальнейшей обработки FileInfo imgFile = new FileInfo(previewImage.FileName); // Приводим расширение к нижнему регистру (если оно было в верхнем) string imgExtension = imgFile.Extension.ToLower(); // Генерируем новое имя для файла string newFileName = Guid.NewGuid() + imgExtension; // Пути сохранения файла string pathPreview = "/files/images/preview/" + newFileName; // уменьшенное изображение // В операторе try/catch делаем уменьшенную копию изображения. // Если входным файлом окажется не изображение, нас перекинет в блок CATCH и выведет сообщение об ошибке try { // Создаем объект класса SixLabors.ImageSharp.Image и грузим в него полученное изображение using (Image image = Image.Load(previewImage.OpenReadStream())) { // Создаем уменьшенную копию и обрезаем её var clone = image.Clone(x => x.Resize(new ResizeOptions { Mode = ResizeMode.Crop, Size = new Size(300, 200) })); // Сохраняем уменьшенную копию await clone.SaveAsync(_appEnvironment.WebRootPath + pathPreview, new JpegEncoder { Quality = 50 }); } } // Если вдруг что-то пошло не так (например, на вход подало не картинку), то выводим сообщение об ошибке catch { // Создаем сообщение об ошибке для вывода пользователю ModelState.AddModelError("GalleryPreviewImage", $"Файл {previewImage.FileName} имеет неверный формат."); // Возвращаем модель с сообщением об ошибке в представление return(View(model)); } Gallery gallery = new Gallery() { Id = Guid.NewGuid(), GalleryTitle = model.GalleryTitle, GalleryDescription = model.GalleryDescription, GalleryDate = DateTime.Now, UserName = User.Identity.Name, GalleryPreviewImage = pathPreview }; await _websiteDB.Galleries.AddAsync(gallery); await _websiteDB.SaveChangesAsync(); return(RedirectToAction("Index", "Gallery")); } // Если не была выбрана картинка для превью, заходим в блок ELSE else { Gallery gallery = new Gallery() { Id = Guid.NewGuid(), GalleryTitle = model.GalleryTitle, GalleryDescription = model.GalleryDescription, GalleryDate = DateTime.Now, UserName = User.Identity.Name, // Вбиваем картинку-заглушку GalleryPreviewImage = "/files/images/preview/nopreview.jpg" // Хардкод. Потом обязательно заменить !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! }; await _websiteDB.Galleries.AddAsync(gallery); await _websiteDB.SaveChangesAsync(); return(RedirectToAction("Index", "Gallery")); } } // Возврат модели при неудачной валидации return(View(model)); }