none
Armazenamento de arquivos em Diretórios

    Pergunta

  • 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!

    terça-feira, 6 de março de 2007 16:26

Todas as Respostas

  • 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:33
  • Olá 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 16:50
  • 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:25
  • Sim,

    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:30
  • 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:39
  • Infelizmente 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 17:49
  • 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:36
  • 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 18:59
  • Olá 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 19:31
  • Bacana Mike...
    verifiquei que funciona, value...
    agora se eu quiser fazer um upload de um arquivo qualquer

    posso utilizar uma instância do File?

     

    terça-feira, 6 de março de 2007 20:02
  • Olá 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


    terça-feira, 6 de março de 2007 20:09