Exemplo de Upload no AspNetCore com Model
using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace CoreWebAppExemploUpload.Models
{
public class Cliente
{
public int ClienteId { get; set; }
public string Nome { get; set; }
public IFormFile Foto { get; set; }
}
}
Colocar o enctype do form para "multipart/form-data", colocar o controller e action
@model CoreWebAppExemploUpload.Models.Cliente
@{
ViewData["Title"] = "Index";
}
<h1>Index</h1>
<form enctype="multipart/form-data" class="form" asp-controller="Home" asp-action="index">
<label>ID Cliente</label>
<input asp-for="ClienteId" />
<label>Nome do Cliente</label>
<input asp-for="Nome" />
<label>Foto do Cliente</label>
<input asp-for="Foto" type="file" />
<br />
<br />
<input type="submit" />
</form>
Observação: O sistema converte a Foto para Base64 e envia para a View ExibeDados atraves de ViewBag. Se for armazenar armazenar no banco de dados em um varbinary(max) utilizar o metodo ConverterToByteArray.
public class HomeController : Controller
{
public IActionResult Index()
{
return View(new Cliente { ClienteId = 1, Nome = "Diogo Rodrigo" });
}
[HttpPost]
public IActionResult Index(Cliente cliente)
{
ViewBag.Imagem = ConverterToBase64(cliente.Foto);
return View("ExibeDados", cliente);
}
private string ConverterToBase64(Microsoft.AspNetCore.Http.IFormFile file)
{
using (var ms = new System.IO.MemoryStream())
{
file.CopyTo(ms);
return Convert.ToBase64String(ms.ToArray());
}
}
private byte[] ConverterToByteArray(Microsoft.AspNetCore.Http.IFormFile file)
{
using (var ms = new System.IO.MemoryStream())
{
file.CopyTo(ms);
return ms.ToArray();
}
}
}
O sistema utiliza a ViewBag Imagem que contém a imagem codificada em Base64 e exibe em uma img do html
@model CoreWebAppExemploUpload.Models.Cliente
@{
ViewData["Title"] = "ExibeDados";
}
@{
var imgSrc = String.Format("data:image/gif;base64,{0}", ViewBag.Imagem);
}
<h1>ExibeDados</h1>
ID: @Model.ClienteId
<br />
Nome: @Model.Nome
<br />
<br />
Image:
<img src="@imgSrc" />