ASP.NET  - Exibindo arquivos no servidor


 

No artigo - ASP.NET - Lendo arquivos e exibindo o seu conteúdo - mostrei como podemos exibir o conteúdo de um arquivo usando as classes Directory e o método GetFiles em páginas ASP.NET. E se você precisar exibir o conteúdo de um diretório do servidor ou mesmo exibir arquivos imagens do servidor para o cliente ?

 

Simples , estamos a um passo de resolver o problema , pois já temos a direção a seguir. Na verdade a solução já esta praticamente pronta no artigo do site - Operações Básicas com arquivos - só temos fazer a adaptação para a aplicação Web.

 

Se você leu os artigos citados já sacou que vamos usar a classe DirectoryInfo e o método GetFiles.

 

A classe DirectoryInfo expõe métodos de instância para criar , mover , enumerar e obter informações de diretórios e subdiretórios. Ela pertence ao namespace System.IO.

 

O caminho do diretório que desejamos tratar é informado no construtor da classe :

 

Public Sub New( ByVal path As String )

 

Nota: Na classe Directory todos os métodos são estáticos ; Na classe DirectoryInfo você precisa criar uma instância da classe para usar os métodos.

 

Se você der uma olhada nos membros da classe vai perceber que podemos ter acesso a muitas informações dos arquivos. Abaixo alguns dos membros:

 

Attributes (herdado de FileSystemInfo) Obtêm ou define os atributos dos arquivos do objeto FileSystemInfo atual.
CreationTime (herdado de FileSystemInfo) Obtêm ou define a hora de criação do FileSystemInfo atual.
Exists Sobrescrita. Obtêm um valor indicando se o diretorio existe.
Extension (herdado de FileSystemInfo) Obtêm a string representando a extensão do arquivo.
FullName (herdado de FileSystemInfo) Obtêm o caminho completo do diretório ou arquivo.
LastAccessTime (herdado de FileSystemInfo) Obtêm ou define a hora do último acesso feito ao arquivo ou diretório.
LastWriteTime (herdado de FileSystemInfo) Obtêm ou define a hora da última escrita feita no arquivo ou diretório.
Name Sobrescrita. Obtêm o nome da instância de DirectoryInfo.
Parent Obtêm o diretorio pai do subdiretorio especificado.

 

O método GetFiles  retorna uma lista de arquivos do diretório atual e será usado para exibir os arquivos selecionados ao usuário. Para selecionar o tipo de arquivo desejado iremos usar o construtor que recebe como parâmetro o tipo de arquivo que desejamos exibir. A sintaxe do método é:

 

Public Function GetFiles(  ByVal searchPattern As String ) As FileInfo()

 

searchPattern pode ser : *.txt , *.bmp , *.jpg , *.gif

 

Agora é partir para a prática e criar uma página ASP.NET para exibir os arquivos. Irei usar o componente DataGrid que será configurado para exibir as seguintes informações dos arquivos de um diretório especificado utilizando a respectiva propriedade da classe para obter a informação:

Para variar vou usar o WebMatrix então :

Abra o Web Matrix e clique no Menu File | New. Você verá a tela a seguir. Agora selecione as opções conforme abaixo:

O editor WEB Matrix divide a exibição do seu projeto em :

Selecione a guia Design e arraste o componente DataGrid para a área de desenho. A seguir na janela properties clique no link Property Builder para configurar o DataGrid.

 

Na janela Properties clique em Columns e para cada coluna que vamos exibir defina o nome da coluna na sequência indica :

  1. Clique em Bound Column
  2. Clique no botão >
  3. Em Header text , informe o nome da coluna.
  4. Defina o Data Field para cada coluna . A ordem será : Name , FullName , CreationTime , Attributes

 

O resultado após você clicar no botão OK deverá ser:

 


 

 

Para encerrar vou criar o código usando o método GetFiles para obter os arquivos e preencher o DataGrid. Na Guia All insira o código conforme abaixo:

 

<%@ Page Language="VB" %>
<%@ import Namespace="System.IO" %>
 
<script runat="server">

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) handles MyBase.Load
    
    if Not Page.IsPostBack Then
         Dim infoDir As New DirectoryInfo(Server.MapPath("/"))
         DataGrid1.DataSource = infoDir.GetFiles("*.aspx")
         DataGrid1.DataBind()
    end if
    
    End Sub

</script>

 

No código acima eu estou criando uma instância da classe DirectoryInfo para a raiz do meu diretório de trabalho e selecionando todos os arquivos com extensão .aspx.

 

O resultado final após executar o projeto será :

 

 

Eu sei , é apenas ASP.NET , mas eu gosto..
 


José Carlos Macoratti