public ActionResult Edit(FilmViewModel filmViewModel, HttpPostedFileBase upload) { if (ModelState.IsValid) { filmViewModel.ThisFilm.ImageId = filmViewModel.ThisFilmImage.ImageId; // Gets the dropdownlist selection and adds the id to the viewmodel. filmViewModel.ThisFilm.GenreId = Int32.Parse(Request["Genres"]); filmViewModel.ThisFilm.CertificateId = Int32.Parse(Request["Certificates"]); if (upload != null && upload.ContentLength > 0) { if (upload.ContentType == "image/jpeg" || upload.ContentType == "image/jpg" || upload.ContentType == "image/gif" || upload.ContentType == "image/png") { // If an image is being uploaded then save the image to a // temporary folder, convert the image to bytes, save the image // as a new record and assign its new id to the film model for // updating the db. if (Request.Files.Count > 0) { var file = Request.Files[0]; { // Save image to temp folder. var fileName = Path.GetFileName(file.FileName); var path = Path.Combine(Server.MapPath("~/ImagesTemp/"), fileName); file.SaveAs(path); // Convert image to bytes. Image newImage = Image.FromFile(path); FilmImage filmImage = new FilmImage(); filmImage.ImageBytes = filmImage.ConvertImageToByteArray(newImage); // Insert image into db and return the new image id. db.FilmImages.Add(filmImage); db.SaveChanges(); int imageId = filmImage.ImageId; //Get the old film image and delete it. FilmImage oldFilmImage = db.FilmImages.Where(x => x.ImageId == filmViewModel.ThisFilmImage.ImageId).Single(); db.FilmImages.Remove(oldFilmImage); filmViewModel.ThisFilm.ImageId = imageId; // Attempt to delete temporary image. if (System.IO.File.Exists(path)) { try { System.IO.File.Delete(path); } catch (Exception) { // Do nothing, temporary folder will be cleared // when application is re-launched. } } } } } else { // Constructs error messages for the view. ViewBag.Message = "Not valid image format"; } } //Update the db and save. db.Entry(filmViewModel.ThisFilm).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(filmViewModel)); }
public ActionResult Create( [Bind(Include = "FilmID,GenreID,CertificateID,ImageID," + "Title,Synopsis,Runtime,ReleaseDate")] Film film, HttpPostedFileBase upload) { if (ModelState.IsValid) { if (upload != null && upload.ContentLength > 0) { if (upload.ContentType == "image/jpeg" || upload.ContentType == "image/jpg" || upload.ContentType == "image/gif" || upload.ContentType == "image/png") { // If an image is being uploaded then save the image to a temporary folder, // convert the image to bytes and assign it to the model for inserting into the db. if (Request.Files.Count > 0) { var file = Request.Files[0]; // Save image to temp folder. var fileName = Path.GetFileName(file.FileName); var path = Path.Combine(Server.MapPath("~/ImagesTemp/"), fileName); file.SaveAs(path); // Convert image to bytes. Image newImage = Image.FromFile(path); FilmImage filmImage = new FilmImage(); filmImage.ImageBytes = filmImage.ConvertImageToByteArray(newImage); // Insert image into db and return the new image id. db.FilmImages.Add(filmImage); db.SaveChanges(); int imageId = filmImage.ImageId; film.ImageId = imageId; // Attempt to delete temporary image. if (System.IO.File.Exists(path)) { try { System.IO.File.Delete(path); } catch (Exception thisException) { // Do nothing, temporary folder will be // cleared when application is re-launched. } } // Add the film to the database and save. film.GenreId = Int32.Parse(Request["Genres"]); film.CertificateId = Int32.Parse(Request["Certificates"]); db.Films.Add(film); db.SaveChanges(); } } else { // Constructs error messages for the view. ViewBag.ErrorMessage = "A valid image image format was not uploaded."; } } else { // Constructs error messages for the view. ViewBag.ErrorMessage = "An image must be uploaded."; } return(RedirectToAction("Index", "Films", new { errorMessage = ViewBag.ErrorMessage })); } return(View(film)); }