none
Retornar Imagem (campo Blob no banco) RRS feed

  • Pergunta

  • Ola pessoal, 

    Não estou conseguindo retornar as imagens de um controller. Abaixo explico todos a codificação:

    Eu criei um controller, e uma view para esse controller que retorna a imagem que está em um campo blob do Oracle. Ela funcionou, normalmente com o controller e view abaixo:

     public class ImagemController : Controller
        {
            // GET: Imagem
            public ActionResult Index()
            {
                return View();
            }
            public ActionResult GetImagem(int id)
            {
                Entities1 tabela = new Entities1();
    
                byte[] BlobImg = tabela.DATABINARY.Where(p => p.ID.Equals(843)).Select(p => p.DATA).FirstOrDefault();
                return File(BlobImg, "image/png");
            }
        }
    }

    View:

    @{
        ViewBag.Title = "Index";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
    
    <h2>Teste de Imagem</h2>
    
    <img src="@Url.Action("GetImagem")" width="100"/>

    Agora, criei um novo controller, para buscar informações de estoque e neste controller eu tenho o atributo IDBLOB, conforme abaixo:

        public class ProntaEntregaController : Controller
        {
            // GET: ProntaEntrega
    
          public ActionResult Index()
            {
                Entities1 Estoque = new Entities1();
    
                List<V500_ESTOQUE_PE_WEB> ProntaE = (from p in Estoque.V500_ESTOQUE_PE_WEB select p).Where(x => x.IDBLOB != null).ToList();
    
                return View(ProntaE);
            }
        }
    }

    E fiz a view, conforme abaixo só pra teste, porém, as imagens não são retornadas. Fica apenas um ícone de imagem, como se ela não carregasse (vou colocar só uma parte pra não ficar muito longo):

        <tr>
                    <td>
                        @Html.DisplayFor(d => item.COD_REDUZIDO)
                    </td>
                    <td>
                        @Html.DisplayFor(d => item.TOTAL_KG_PE)
                    </td>
                    <td>
                        <img src="@Url.Action("GetImage", new { id = item.IDBLOB })" width=100 />
                    </td>
                </tr>


    Jerry

    quarta-feira, 3 de janeiro de 2018 22:32

Todas as Respostas

  • Tente trocar:

      <img src="@Url.Action("GetImage", new { id = item.IDBLOB })" width=100 />

    Por:

      <img src="@Url.Action("Imagem","GetImage", new { id = item.IDBLOB })" width=100 />

    Abraços!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    quarta-feira, 3 de janeiro de 2018 22:41
  • Não funcionou passando o controller também.

    Fica conforme abaixo o campo de imagem:



    Jerry

    quarta-feira, 3 de janeiro de 2018 22:55
  • Não funcionou passando o controller também.

    Fica conforme abaixo o campo de imagem:



    Jerry

    Existe esse produto?

     tabela.DATABINARY.Where(p => p.ID.Equals(843))

    Por que ta fixo néh!

    Esse é um produto teste?

    Rss outra coisa acho que inverti aqui:

      <img src="@Url.Action("Imagem","GetImage", new { id = item.IDBLOB })" width=100 />

    Tem que ser assim:

      <img src="@Url.Action("GetImage","Imagem", new { id = item.IDBLOB })" width=100 />

    A Controller é depois!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter


    quarta-feira, 3 de janeiro de 2018 23:05
  • Sim, eu coloquei fixo pra pegar um que eu tenha certeza que tenha o blob. 

    Com relação a inversão, eu vi que estava invertido... 

    Que bucha isso... o estranho é que se eu executar pela view que tá ligada a controller da imagem, funciona...


    Jerry

    quarta-feira, 3 de janeiro de 2018 23:13
  • Sim, eu coloquei fixo pra pegar um que eu tenha certeza que tenha o blob. 

    Com relação a inversão, eu vi que estava invertido... 

    Que bucha isso... o estranho é que se eu executar pela view que tá ligada a controller da imagem, funciona...


    Jerry

    Você consegui debugar?

    E ver quando abrir a view se cai na controller?


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    quarta-feira, 3 de janeiro de 2018 23:15
  • Sim, eu coloquei fixo pra pegar um que eu tenha certeza que tenha o blob. 

    Com relação a inversão, eu vi que estava invertido... 

    Que bucha isso... o estranho é que se eu executar pela view que tá ligada a controller da imagem, funciona...


    Jerry

    Você consegui debugar?

    E ver quando abrir a view se cai na controller?


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    Coloquei o breakpoint no return da controller da imagem, aparentemente não passou por lá não!!

    Será o que pode ser então ?


    Jerry

    quarta-feira, 3 de janeiro de 2018 23:19
  • Sim, eu coloquei fixo pra pegar um que eu tenha certeza que tenha o blob. 

    Com relação a inversão, eu vi que estava invertido... 

    Que bucha isso... o estranho é que se eu executar pela view que tá ligada a controller da imagem, funciona...


    Jerry

    Você consegui debugar?

    E ver quando abrir a view se cai na controller?


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    Coloquei o breakpoint no return da controller da imagem, aparentemente não passou por lá não!!

    Será o que pode ser então ?


    Jerry

    Como tentar não custa nada, remova isso:

    new { id = item.IDBLOB }

    Deixa apenas assim:

    <img src="@Url.Action("GetImage","Imagem")" width=100 />

    e teste, se não funcionar tente assim:

    <img src="@Url.Action("GetImage","Imagem", new { id = 1})" width=100 />
    Caso não funcione, preciso ver sua controller completa Imagem e a View Completa!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    quinta-feira, 4 de janeiro de 2018 00:21
  • Não funcionou, segue a minha controller de imagem.

          public ActionResult Index()
            {
                return View();
            }
            public ActionResult GetImagem(int id)
            {
                Entities1 tabela = new Entities1();
    
                byte[] BlobImg = tabela.DATABINARY.Where(p => p.ID.Equals(id)).Select(p => p.DATA).FirstOrDefault();
                return File(BlobImg, "image/png");
            }
        }

    E aqui a view do controller imagem

    @{
        ViewBag.Title = "Index";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
    
    <h2>Teste de Imagem</h2>
    
    <img src="@Url.Action("GetImagem")" width="100"/>
    
    



    Jerry

    quinta-feira, 4 de janeiro de 2018 21:46
  • Olá Jerry

    Conseguir resolver sua dúvida?

    att

    terça-feira, 9 de janeiro de 2018 17:33
    Moderador
  • Olá JeRRy-SC,

    Você depurou isso aqui:

    byte[] BlobImg = tabela.DATABINARY.Where(p => p.ID.Equals(id)).Select(p => p.DATA).FirstOrDefault();
    return File(BlobImg, "image/png");

    Pra ver se realmente está chegando algo?


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    quarta-feira, 10 de janeiro de 2018 01:13