Desenvolvimento - Visual Studio

Resgatando Imagens Dinamicamente usando ASP.NET MVC e C#

Veja neste artigo como resgatar imagens dinamicamente usando ASP.NET MVC e C#

por Marcos Paulo Lopes Soares



Já me deparei com alguns cenários que tivemos que buscar imagens dinamicamente em um diretório. Fiz isso recentemente usando ASP.NET MVC, então resolvi compartilhar com vocês.

Criando o projeto

Figura 1. Criando o projeto.

1° Crie um Projeto que pode ser um ASP.NET MVC pode ser um Empty Application ou mesmo o ASP.NET MVC Web Application. No meu caso eu usei o Web Application pré-definido pelo Visual Studio e tirei os códigos desnecessários, apenas para usar o layout.

Observação: O Print screen da aplicação está no final do artigo.

O Importante é termos um Controller e uma View para realizar o nosso LAB.

Listagem 1: No código da sua View insira esse código:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" 
runat="server">
    Home Page
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" 
runat="server">
    <h2>Exemplo de Albúm de Fotos</h2>
    <p>
        Albúm de Fotos

        <% foreach(String oImagem in (List<String>)Model) { %>
            <div style="float:left;display: 
				inline;margin:10px;border:2px solid #ccc;">
                <img src="Imagens/<%= oImagem %>" 
				     width="100" height="100" />
            </div>
        <%}%>
    </p>
</asp:Content>

Observações: Não usei um WebGrid por questão de adequação de Layout, mas o importante é a lógica de realizar um laço de repetição para pode pegar os nomes das imagens que será dado pelo Controller.

Obviamente você pode colocar um Light Window como um nyroModal, segue o Link: http://nyromodal.nyrodev.com/ para incrementar sua página.

Listagem 2: O Código do controller fica dessa maneira:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO;

namespace FirstMVCApplication.Controllers
{
[HandleError]
 public class HomeController : Controller
 {
   public ActionResult Index()
   {
     //Diretório fisico das imagens para serem lidas via DirectoryInfo. 
	 //Mas será exibido apenas o diretório HTTP.
     //Mude esse diretório para o diretório em questão, onde está localizada as imagens.
     string strDiretorio = @"C:\Users\mpaulo\Documents\Visual Studio 2010\Projects\MVCImagensDinamicamente\MVCImagensDinamicamente\Imagens\";
     DirectoryInfo oDirectoryInfo = new DirectoryInfo(strDiretorio);

     List<String> oListTiposImagens = new List<string>();
     //Adicione quantas extensões você desejar!
     oListTiposImagens.Add("*.gif");
     oListTiposImagens.Add("*.png");
     oListTiposImagens.Add("*.jpg");

     List<String> oListImagensSelecionadas = new List<String>();
     //Todas as extensões escolhidas são varridas e 
	 //adicionadas em uma lista genérica de Strings
     foreach (String strExtensao in oListTiposImagens)
     {
       List<FileInfo> oListFileInfo = oDirectoryInfo.GetFiles(strExtensao).ToList();
       foreach (FileInfo oImagem in oListFileInfo)
       {
           oListImagensSelecionadas.Add(oImagem.Name);
       }
     }
       // Retorno para o Modelo a Lista de Imagens que foram carregas do diretório.
       return View(oListImagensSelecionadas);
   }
 }
}
Print Screen da Aplicação funcionando

Figura 2. Print Screen da Aplicação funcionando.

Vantagens :

Quando você estiver em um cenário para exibir apenas as imagens, é interessante varrer o diretório dessa forma, ao invés de colocar as informações das imagens em um XML por exemplo. Se você não tem nenhum dado adicional por imagem essa solução é perfeita.

Bom é isso ai Pessoal. Muito Obrigado!

Marcos Paulo Lopes Soares

Marcos Paulo Lopes Soares - Pós-Graduando em Projeto e Desenvolvimento de Sistemas pela Mackenzie e Bacharelado em Sistema de Informação pela FIAP. Sou Analista de Sistemas, com mais de 5 anos de experiência em desenvolvimento de Software .NET e experiência em Java também. Certificado MCP,MCTS e MCPD em ASP.NET 3.5. Site: www.slipmp.com.br Blog: www.slipmp.com.br/blog