public ActionResult Create([Bind(Include = "GaleriaElementoID,ElementoID,legenda")] GaleriaElemento galeriaElemento, HttpPostedFileBase upload) { try { if (ModelState.IsValid) { string[] allowedImageExtensions = { ".gif", ".png", ".jpeg", ".jpg" }; string[] allowedVideoExtensions = { ".mp4", ".mp3", ".wav" }; string[] allowedAudioExtensions = { ".mp4", ".mp3", ".wav" }; String fileExtension = Path.GetExtension(upload.FileName); if (upload != null && upload.ContentLength > 0) { for (int i = 0; i < allowedImageExtensions.Length; i++) { if (fileExtension == allowedImageExtensions[i]) { var file = new FilePathElemento { FileName = Guid.NewGuid().ToString() + Path.GetExtension(upload.FileName), FileType = FileType.Imagem }; galeriaElemento.FilePathElementos = new List <FilePathElemento>(); galeriaElemento.FilePathElementos.Add(file); upload.SaveAs(Path.Combine(Server.MapPath("~/Content/Images/GaleriaElemento/"), file.FileName)); } } for (int i = 0; i < allowedVideoExtensions.Length; i++) { if (fileExtension == allowedVideoExtensions[i]) { var file = new FilePathElemento() { FileName = Guid.NewGuid().ToString() + Path.GetExtension(upload.FileName), FileType = FileType.Video }; galeriaElemento.FilePathElementos = new List <FilePathElemento>(); galeriaElemento.FilePathElementos.Add(file); upload.SaveAs(Path.Combine(Server.MapPath("~/Content/Videos/GaleriaElemento/"), file.FileName)); } } for (int i = 0; i < allowedAudioExtensions.Length; i++) { if (fileExtension == allowedAudioExtensions[i]) { var file = new FilePathElemento() { FileName = Guid.NewGuid().ToString() + Path.GetExtension(upload.FileName), FileType = FileType.Audio }; galeriaElemento.FilePathElementos = new List <FilePathElemento>(); galeriaElemento.FilePathElementos.Add(file); upload.SaveAs(Path.Combine(Server.MapPath("~/Content/Audio/GaleriaElemento/"), file.FileName)); } } } db.GaleriaElemento.Add(galeriaElemento); db.SaveChanges(); return(RedirectToAction("Index")); } } catch (Exception) { ModelState.AddModelError("", "Tem que adicionar um ficheiro"); } ViewBag.ElementoID = new SelectList(db.Elemento, "ElementoID", "nome", galeriaElemento.ElementoID); return(View(galeriaElemento)); }
public ActionResult Edit([Bind(Include = "GaleriaElementoID,ElementoID,legenda")] GaleriaElemento galeriaElemento, HttpPostedFileBase upload) { var galeriaElementoToUpdate = db.GaleriaElemento.Find(galeriaElemento.GaleriaElementoID); if (ModelState.IsValid) { if (TryUpdateModel(galeriaElementoToUpdate, "", new string[] { "GaleriaElementoID,ElementoID,legenda" })) { try { if (upload != null && upload.ContentLength > 0) { //Apaga a lista dos ficheiros associados e o ficheiro local associado if (galeriaElementoToUpdate.FilePathElementos.Any(f => f.FileType == FileType.Imagem)) { string currentFilePath = galeriaElementoToUpdate.FilePathElementos.First().FileName; db.FilePathsEl.Remove( galeriaElementoToUpdate.FilePathElementos.First(f => f.FileType == FileType.Imagem)); FileInfo file = new FileInfo(Path.Combine(Server.MapPath("~/Content/Images/GaleriaElemento/"), currentFilePath)); file.Delete(); } else if (galeriaElementoToUpdate.FilePathElementos.Any(f => f.FileType == FileType.Audio)) { string currentFilePath = galeriaElementoToUpdate.FilePathElementos.First().FileName; db.FilePathsEl.Remove( galeriaElementoToUpdate.FilePathElementos.First(f => f.FileType == FileType.Audio)); FileInfo file = new FileInfo(Path.Combine(Server.MapPath("~/Content/Images/GaleriaElemento/"), currentFilePath)); file.Delete(); } else if (galeriaElementoToUpdate.FilePathElementos.Any(f => f.FileType == FileType.Video)) { string currentFilePath = galeriaElementoToUpdate.FilePathElementos.First().FileName; db.FilePathsEl.Remove(galeriaElementoToUpdate.FilePathElementos.First(f => f.FileType == FileType.Video)); FileInfo file = new FileInfo(Path.Combine(Server.MapPath("~/Content/Videos/GaleriaElemento/"), currentFilePath)); file.Delete(); } //Verifica se o novo ficheiro é de uma extenção válida e adiciona-o à lista de ficheiros e insere localmente na pasta correspondente string[] allowedImageExtensions = { ".png", ".jpeg", ".jpg" }; string[] allowedVideoExtensions = { ".gif" }; string[] allowedAudioExtensions = { ".mp4", ".mp3", ".wav" }; String fileExtension = Path.GetExtension(upload.FileName); for (int i = 0; i < allowedImageExtensions.Length; i++) { if (fileExtension == allowedImageExtensions[i]) { var file = new FilePathElemento { FileName = Guid.NewGuid().ToString() + Path.GetExtension(upload.FileName), FileType = FileType.Imagem }; galeriaElementoToUpdate.FilePathElementos.Add(file); upload.SaveAs(Path.Combine(Server.MapPath("~/Content/Images/GaleriaElemento/"), file.FileName)); } } for (int i = 0; i < allowedVideoExtensions.Length; i++) { if (fileExtension == allowedVideoExtensions[i]) { var file = new FilePathElemento { FileName = Guid.NewGuid().ToString() + Path.GetExtension(upload.FileName), FileType = FileType.Video }; galeriaElementoToUpdate.FilePathElementos.Add(file); upload.SaveAs(Path.Combine(Server.MapPath("~/Content/Videos/GaleriaElemento"), file.FileName)); } } for (int i = 0; i < allowedAudioExtensions.Length; i++) { if (fileExtension == allowedAudioExtensions[i]) { var file = new FilePathElemento() { FileName = Guid.NewGuid().ToString() + Path.GetExtension(upload.FileName), FileType = FileType.Audio }; galeriaElementoToUpdate.FilePathElementos.Add(file); upload.SaveAs(Path.Combine(Server.MapPath("~/Content/Audio/GaleriaElemento/"), file.FileName)); } } } db.Entry(galeriaElementoToUpdate).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } catch (RetryLimitExceededException /* dex */) { //Log the error (uncomment dex variable name and add a line here to write a log. ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator."); } } } ViewBag.ElementoID = new SelectList(db.Elemento, "ElementoID", "nome", galeriaElemento.ElementoID); return(View(galeriaElemento)); }