Exibindo Arquivos e Imagens


Muitas vezes em nossos sistemas de internet, precisamos exibir uma listagem os arquivos que estão no disco do servidor para o Usuário, seja para uma simples conferência ou até mesmo para edição do mesmos (quando possível).

Há outras ocasiões onde esses arquivos são Imagens, onde devem ser exibidas amigavelmente para o Usuário. Neste caso, não basta exibir o seu nome, ou suas características, mas sim a Imagem propriamente dita.

O .NET Framework nos fornece diversas classes para acesso à arquivos e diretórios. Todas contidas dentro do Namespace System.IO. Neste artigo veremos sobre a classe DirectoryInfo e sobre o método GetFiles().

A Classe DirectoryInfo

Com a Classe DirectoryInfo temos acesso as informações de um determinado diretório, incluindo seu Nome, Path, etc., passando em seu construtor um parâmetro que identifica o caminho do diretório a ser retornardo seus respectivos arquivos. Com isso, temos acesso ao método GetFiles(), qual retorna uma lista contendo os de arquivos do diretório em questão. Neste mesmo método, temos um Overload, que recebe como parâmetro um “SearchPattern”, ou seja, uma String que você informa a extensão dos arquivos a serem retornados.

Exibindo Arquivos TXT de um Diretório (DataGrid)

Como vimos um pouco acima, em determinados momentos precisamos exibir uma listagem dos arquivos de um determinado diretório para o Usuário. Com isso, utilizaremos o controle DataGrid para a exibição destes arquivos.

Sabendo-se que o método GetFiles() retorna uma lista dos arquivos do diretório, a idéia é criarmos as BoundColumns com as propriedades do arquivo, como: Name, FullName (Path), e LastWriteTime (Data da Última Modificação). Arraste um controle DataGrid na tela, e clique com botão direito em cima do mesmo, vá até Property Builder e em seguinda clique em Columns. Você deverá adicionar três BoundColumns, informando o Nome, Caminho e Data da Última Modificação do Arquivo. A figura abaixo ilustra o processo:

Figura 1 – Property Builder do DataGrid.

As Propridades devem ficar conforme a tabela abaixo:

Coluna 1 Coluna 2 Coluna 3
Header Text Nome do Arquivo Path Ultima Modificação
Data Field Name FullName LastWriteTime

Feito isso, seu DataGrid deverá ficar como a imagem abaixo:

Figura 2 – DataGrid já desenhado.

Agora nos resta fazer a codificação para que o método GetFiles() popule o DataGrid. Temos agora que utilizar o evento Page_Load do WebForm, para populá-lo. O código ficará da seguinte forma:

1
2
3
4
5
6
7
8
9
10
 
Private Sub Page_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
    If Not Page.IsPostBack Then
        Dim dirInfo As New DirectoryInfo(Server.MapPath(“Arquivos/”))
        With Me.dgArquivos
            .DataSource = dirInfo.GetFiles(“*.txt”)
            .DataBind()
        End With
    End If
End Sub
 
Código 1 – Carregando o DataGrid com arquivos TXT.

Como vemos, o método GetFiles recebe como parâmetro a string contendo a extensão do arquivo que desejamos recuperar do diretório, ou seja, serão retornados apenas arquivos com extensão “*.txt”. Ao rodar a aplicação o resultado deverá ser:

Figura 3 – DataGrid preenchido com a Listagem de Arquivos.

Exibindo Imagens (DataList)

Neste caso, temos que exibir as imagens de um diretório no DataList. Não muda muito com relação ao exemplo anterior com TXT. A única diferença significativa é a mudança do controle de DataGrid para DataList.

Crie um novo WebForm contendo um controle DataList. Clique com o botão direito em cima do mesmo, e vá até a opção Property Builder. Defina a propriedade Columns como 3 e a propriedade Direction como Vertical, conforme a figura abaixo:

Figura 4 – Configurando o DataList.

Da mesma forma que fizemos para resgatar os arquivos *.txt no exemplo anterior, faremos aqui também, apenas mudando o SearchPattern para “*.jpg”, conforme o código abaixo:

1
2
3
4
5
6
7
8
9
10
 
Private Sub Page_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
    If Not Page.IsPostBack Then
        Dim dirInfo As New DirectoryInfo(Server.MapPath(“Imagens/”))
        With Me.dtlImagens
            .DataSource = dirInfo.GetFiles(“*.jpg”)
            .DataBind()
        End With
    End If
End Sub
 
Código 2 – Carregando o DataList com arquivos JPG.

Como estamos utilizando o DataList, precisamos apenas definir onde os campos irão ser colocados no HTML. Para isso, localize a seção ItemTemplate e AlternatingItemTemplate do DataList e defina:

1
2
3
4
5
6
7
 
<ItemTemplate>
    <img src = ‘Imagens/<%# DataBinder.Eval(Container.DataItem, “Name”) %>‘>
</ItemTemplate>
 
<AlternatingItemTemplate>
    <img src = ‘Imagens/<%# DataBinder.Eval(Container.DataItem, “Name”) %>‘>
</AlternatingItemTemplate>
 
Código 2 – Carregando o DataList com arquivos JPG.

Ao compilar, se nenhuma falha ocorrer, o resultado deverá ser conforme a figura abaixo:

Figura 5DataList carregado com as Imagens.

Conclusão: Vimos neste artigo o quanto é fácil manipularmos Diretórios e seus Arquivos com o Namespace System.IO e também a flexibilidade que as classes nos fornecem, permitindo o acesso rápido as suas propriedades e atribuindo essas listagens de arquivos e/ou diretórios aos controles, facilitando a vida do desenvolvedor.

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s