Ejemplo n.º 1
0
        public async Task <IActionResult> Add([Bind("ID,Nome,Sexo,FicheiroImg")] Artista artista, IFormFile fotoArtista)
        {
            if (ModelState.IsValid)
            {
                db.Add(artista);
                await db.SaveChangesAsync(); // commit

                return(RedirectToAction(nameof(Index)));
            }

            // alguma coisa correu mal.
            // devolve-se o controlo da aplicação à View
            return(View(artista));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Create([Bind("ID,Titulo,Genero,FicheiroImg")] Faixas faixa, IFormFile fotoFaixa)
        {
            // **************************************
            // processar a fotografia
            // **************************************
            // vars. auxiliares
            string caminhoCompleto = "";
            bool   haImagem        = false;

            // será q há fotografia?
            //    - uma hipótese possível, seria reenviar os dados para a View e solicitar a adição da imagem
            //    - outra hipótese, será associar ao faixa uma fotografia 'por defeito'
            if (fotoFaixa == null)
            {
                faixa.FicheiroImg = "NoFaixa.png";
            }
            else
            {
                // há ficheiro
                // será o ficheiro uma imagem?
                if (fotoFaixa.ContentType == "image/jpeg" ||
                    fotoFaixa.ContentType == "image/png")
                {
                    // o ficheiro é uma imagem válida
                    // preparar a imagem para ser guardada no disco rígido
                    // e o seu nome associado ao faixa
                    Guid g;
                    g = Guid.NewGuid();
                    string extensao = Path.GetExtension(fotoFaixa.FileName).ToLower();
                    string nome     = g.ToString() + extensao;
                    // onde guardar o ficheiro
                    caminhoCompleto = Path.Combine(_caminho.WebRootPath, "Imagens\\Faixas", nome);
                    // associar o nome do ficheiro ao faixa
                    faixa.FicheiroImg = nome;
                    // assinalar que existe imagem e é preciso guardá-la no disco rígido
                    haImagem = true;
                }
                else
                {
                    // há imagem, mas não é do tipo correto
                    faixa.FicheiroImg = "NoFaixa.png";
                }
            }

            if (ModelState.IsValid)
            {
                try {
                    _context.Add(faixa);
                    await _context.SaveChangesAsync();

                    // se há imagem, vou guardá-la no disco rígido
                    if (haImagem)
                    {
                        using var stream = new FileStream(caminhoCompleto, FileMode.Create);
                        await fotoFaixa.CopyToAsync(stream);
                    }
                    return(RedirectToAction(nameof(Index)));
                }
                catch (Exception) {
                    // se chegar aqui, é pq alguma coisa correu mesmo mal...
                    // o que fazer?
                    // opções a realizar (todas, ou apenas uma...):
                    //   - escrever, no disco do servidor, um log com o erro
                    //   - escrever numa tabela de Erros, na BD, o log do erro
                    //   - enviar o modelo de volta para a View
                    //   - se o erro for corrigível, corrigir o erro
                }
            }
            return(View(faixa));
        }