Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }