Armazenamento de arquivos em Diretórios
-
terça-feira, 6 de março de 2007 16:26
Boa Tarde pessoal,
Estou precisando desenvolver uma aplicação para armazenar arquivos em dirretórios e lista-los para que o susuário possa visualizar na Web.
A estrutura fucionária assim, cadastro um cliente e já é criado uma pasta em uma unidade da minha rede com o código de cadastro daquele cliente, a partir dessa pasta vão ser criadas pelo usuário outras pastas para produtos e dentro de cadas pasta dessa vão existir imagens.
Essa usudade de rede onde serão criadas as pastas servira como um servidor de imagens aramazenadas dentro de pastas e sub pastas criadas de acordo com a necessidade do usuário, as informações de cadastro do cliente ficara em um bando de dados Sql Server,
Gostaria de saber se alguém tem alguma dica para me dar de como eu poderia fazer essas criações de diretórios e listar os mesmo e apresentar como um treeview por exemplo para que o usuário possa navegar e abrir as imagens dos diretórios?
Obrigado pela atenção!
Todas as Respostas
-
terça-feira, 6 de março de 2007 16:33
Olá Wagner...
Para isso, utilize a classe :
System.IO
Esta classe faz a manipulação de arquivos e pastas.. dá pra varrer as pastas, ver que arquivos tem dentro dela, incluir excluir, etc...Para saber tudo sonre uma pasta, crie um new System.IO.DirectoryInfo
Para saber tudo de um arquivo, crie um new System.IO.FileInfo
Para mais detalhes acesse:
http://msdnwiki.microsoft.com/pt-br/mtpswiki/system.io(VS.80).aspx
Espero ter ajudado... -
terça-feira, 6 de março de 2007 16:50Olá Wagner,
Para criar um diretório caso o mesmo não exista :
Dim NomeDaNovaPasta As String = ......seu código para gerar o nome da pasta
Dim Diretorio as string
Diretorio = (Server.MapPath("~/uploads/" & NomeDaNovaPasta ))
If Not System.IO.Directory.Exists(Diretorio) Then
System.IO.Directory.CreateDirectory(Diretorio)
End If
'=====
No código acima o TIL indica a pasta corrente ou seja estamos usando um subdiretório chamado UPLOADS e nele teremos as várias pastas que iremos usar sendo uma para cada cliente.
Para ler todos os arquivos existentes em um diretório vc pode fazer algo como :
Dim NomeArq as string
For Each file As String In System.IO.Directory.GetFiles(NomeDoDiretorio)
NomeArq = file
'Providencias a serem tomadas com o nome do arquivo lido.
....
....
Next
'===
Espero ter ajudado.
Por favor marque como resposta caso o post tenha sido útil. -
terça-feira, 6 de março de 2007 17:25
Ok...
Agora por exemplo..Como eu disse anteriormente, quando eu cadastrar um cliente eu vou ter uma nova pasta criada no meu Storage, o nome da pasta vai ser o código de cadastro desse cliente na base de dados Sql. Na parte de consulta do cliente feita pelo usuário,ele vai selecionar o cliente em um DropDownList, a partir desse DropDownList selecionado, vai ser preencheenchido um outro DropDownList com uma lista de produtos que provavelmente vão ser SubDiretórios da pasta principal do cliente. Teria como preencher um dropdownlist com os diretórios existentes dentro da minha pasta principal do cliente como se eu estivesse consultando uma base de dados?
Obrigado!.
-
terça-feira, 6 de março de 2007 17:30Sim,
Vc pode preebcher o drop lendo os nomes dos arquivos que estão na pasta do cliente fazendo um FOR EACH...
Dim NomeArq as string
For Each file As String In System.IO.Directory.GetFiles(NomeDoDiretorio)
NomeArq = file
'Providencias a serem tomadas com o nome do arquivo lido.
....
....
Next
'=== -
terça-feira, 6 de março de 2007 17:39
Eu vi que passado como data source e dando um Databind ele preenche também
DDL1.DataSource = istancia.GetDirectories()
DDL1.DataBind()E no caso de um TreeView ?
se eu quiser exibir a arvore inteira do cliente com diretório, sub diretório e Imagens armazenadas?
vc tem noção de como eu faria, tentei fazer como o exemplo acima com um datasource mas ele deu um erro!
-
terça-feira, 6 de março de 2007 17:49Infelizmente ai não posso te ajudar.
No meu caso trabalho com a leitura direta dos arqs sem envolver uma treeview. -
terça-feira, 6 de março de 2007 18:36
Vc adiciona o nodo pai que é o cliente.
Depois obtém todos os subdiretorios com o GetDirectories().
Você percorre os valores retornados do GetDirectories e vai dando um Node.Add e vai adicionando os nodos na árvore.
-
terça-feira, 6 de março de 2007 18:59
No Caso da consulta de sub Diretório e de arquivos dentro de um diretório com For Each,
como eu faria para varificar se um subdiretório existe ou não dentro de um diretório com esse for each?
-
terça-feira, 6 de março de 2007 19:31Olá Wagner,
Como coloquei no código acima :
1 - Para verificar se um diretório existe :
Dim NomeDaNovaPasta As String = ......seu código para gerar o nome da pasta
Dim Diretorio as string
Diretorio = (Server.MapPath("~/uploads/" & NomeDaNovaPasta ))
If Not System.IO.Directory.Exists(Diretorio) Then
System.IO.Directory.CreateDirectory(Diretorio)
End If
'===== -
terça-feira, 6 de março de 2007 20:02
Bacana Mike...
verifiquei que funciona, value...
agora se eu quiser fazer um upload de um arquivo qualquerposso utilizar uma instância do File?
-
terça-feira, 6 de março de 2007 20:09Olá Wagner,
Para fazer seus uploads agora, recomendo que vc use o componente FileUpload...
Combinando o FileUpload com as funções de criação e leitura de diretórios vc poderá fazer o que precisa.
Espero ter ajudado
Por favor marque como resposta se o post foi útil

