Upload images to Asp net core 1.0

Asked

Viewed 835 times

2

Oh guys I’m having a doubt I’m new in the . net, I learned in a course in Asp net mvc 5 so I would need to take that upload code and turn to Asp net core if you can help I am grateful.

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "ClienteId,Nome,Email,Endereco,Imagem,ImagemTipo")] Cliente cliente, HttpPostedFileBase upload)
    {
        if (ModelState.IsValid)
        {
            if (upload != null && upload.ContentLength > 0)
            {
                var arqImagem = new Cliente
                {
                    ImagemTipo = upload.ContentType
                };
                var reader = new BinaryReader(upload.InputStream);
                arqImagem.Imagem = reader.ReadBytes(upload.ContentLength);
                cliente.Imagem = arqImagem.Imagem;
                cliente.ImagemTipo = arqImagem.ImagemTipo;
            }
            db.Clientes.Add(cliente);
            db.SaveChanges();
            TempData["mensagem"] = string.Format("{0}  : foi incluído com sucesso", cliente.Nome);
            return RedirectToAction("Catalogo");
        }

        return View(cliente);
    }    

The model

[Table("Clientes")]
public class Cliente
{

    public int ClienteId { get; set; }
    [Required(ErrorMessage = "Informe o nome do cliente")]
    public string Nome { get; set; }
    [Required(ErrorMessage = "Informe o email do cliente")]
    [EmailAddress]
    public string Email { get; set; }
    [Required(ErrorMessage = "Informe o endereço do cliente")]
    public string Endereco { get; set; }
    public byte[] Imagem { get; set; }
    public string ImagemTipo { get; set; }
}

And the call to View

 public ActionResult ExibirImagem(int id)
    {
        using (ClienteContexto db = new ClienteContexto())
        {
            var arquivoRetorno = db.Clientes.Find(id);
            return File(arquivoRetorno.Imagem, arquivoRetorno.ImagemTipo);
        }
    }
  • Hello Junior. Avoid putting picture of the code pq makes it difficult for those who will answer pq have to enter all code image, instead use the option Code sample to insert codes into the question. See how to ask.

  • Opa I made the proper corrections thanks for the touch.

1 answer

1


Hello, try the following:

    // Na sua controller adicione o using
    using Microsoft.AspNetCore.Http;
    // E altere sua action para


    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(Cliente cliente, IFormFile upload)
    {

        if (ModelState.IsValid)
        {
            if (upload != null && upload.Length > 0)
            {
                var arqImagem = new Cliente
                {
                    ImagemTipo = upload.ContentType
                };

                var reader = new BinaryReader(upload.OpenReadStream());
                arqImagem.Imagem = reader.ReadBytes((int)upload.Length);
                cliente.Imagem = arqImagem.Imagem;
                cliente.ImagemTipo = arqImagem.ImagemTipo;
            }
            //db.Clientes.Add(cliente);
            //db.SaveChanges();
            TempData["mensagem"] = string.Format("{0}  : foi incluído com sucesso", cliente.Nome);
            return RedirectToAction("Catalogo");
        }

        return View(cliente);
    }

In your view add:

<input type="file" name="upload" />

In case you want multiple files you will do as follows:

// Na sua action transformamos o parâmetro em uma lista
public ActionResult Create(Cliente cliente, List<IFormFile> upload)
{
   // qualquer lógica aqui
}

In your input view add the Multiple attribute:

 <input type="file" name="upload" multiple />

For more detailed information check out the Microsoft documentation on the subject

I hope this can help you.

  • 0 vote against Accept Opa, thanks for the reply as I started a little while ago in Asp I was in doubt in this part, the code of Asp mvc 5 did not work in Asp core.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.