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:
Nome - Name
Caminho Completo - Fullname
hora de criação - CreationTime
Atributo do arquivo - attributes
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 :
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