PHP – Exibindo arquivos de diretórios + filtro de arquivos

Esse Post foi movido para :

http://clares.com.br/2010/06/04/php-exibindo-arquivos-de-diretorios-filtro-de-arquivos/

Desculpe pelo transtorno, aproveite para assinar o novo blog.

13 pensamentos sobre “PHP – Exibindo arquivos de diretórios + filtro de arquivos

  1. Cláudia junho 4, 2010 às 2:30 pm

    Olá, apesar d não acrescentar na postagem, vou deixar um comentário… Acho esse blog muito legal, já está a tempos nos favoritos, apesar d não entender muita coisa pois estou iniciando a programação de uma galeria na faculdade… Mas enfim, lhe agradeço a disposição por estar dispondo d seu tempo para ajudar outros programadores. Valeu!

    • Rafael Clares junho 4, 2010 às 2:51 pm

      Cláudia, obrigado pelo comentário, são esses que me mantém escrevendo!
      Tenha um ótimo fim de semana!

  2. Andre Carvalho agosto 17, 2010 às 6:46 pm

    Olá Rafael !
    Faço das palavras da Cláudia as minhas, e apesar de já ter bastante tempo com TI, gosto muito das tuas postagens, são sempre interessantes e acrescentam bastante no trabalho do dia-a-dia !
    Parabéns pela criatividade.
    Abs !

    • Rafael Clares agosto 17, 2010 às 7:50 pm

      André, obrigado pelo comentário, fico feliz que o conteúdo do blog lhe interesse.
      Um forte abraço

  3. Aidar setembro 22, 2010 às 4:42 pm

    Sempre consulto seu blog, aliais esta perfeito muito bom mais olha ia agora fiquei perdido :

    Fatal error: Uncaught exception ‘RuntimeException’ with message ‘DirectoryIterator::__construct(images) [directoryiterator.–construct]: failed to open dir: No such file or directory’ in C:\VertrigoServ\www\teste\ex\Diretorios\FileFilter.class.php:15 Stack trace: #0 C:\VertrigoServ\www\teste\ex\Diretorios\FileFilter.class.php(15): DirectoryIterator->__construct(‘images’) #1 C:\VertrigoServ\www\teste\ex\Diretorios\index.php(18): FileFilter->showFiles() #2 {main} thrown in C:\VertrigoServ\www\teste\ex\Diretorios\FileFilter.class.php on line 15

    Onde eu coloco o diretório?

    • Rafael Clares setembro 22, 2010 às 4:54 pm

      Se você seguiu direito o post, ou seja, criou os 2 arquivos e depois no informou no $filter = new FileFilter(“images”, “/jpg/”); o diretório não deveria dar nada errado,
      como ficou o php que faz a listagem ? no caso do post o 2 arquivo… e qual a versão do seu PHP ? Essa classe vai funcionar no PHP5. Se for o PHP5 o teu, me diz como ficou a linha

      Estou vendo que a classe está em:
      C:\VertrigoServ\www\teste\ex\Diretorios\FileFilter.class.php

      e o arquivo neste caso não está encontrando o diretório
      C:\VertrigoServ\www\teste\ex\Diretorios\images\
      Esse diretório existe?

  4. Aidar setembro 22, 2010 às 5:06 pm

    Nossa cara desculpa ai foi um erro mesmo faltou o diretório pensei que eu teria que dizer o caminho do diretório viajei.
    Valeu pela dica.

  5. Maicol setembro 30, 2010 às 4:32 pm

    Bem interessante esse filtro, mas você saberia me dizer que critérios ele usa para ordenação dos arquivos do diretorio escolhido?

    Abraços

    • Rafael Clares setembro 30, 2010 às 4:36 pm

      Maicol, como o filtro está “pegando” o nome do arquivo, ele ordena a listagem pelo “nome”.
      Você pode testar outros métodos para que retorne outras informações do arquivo e a partir disso criar a listagem na ordem desejada, mas para isso precisará consultar a doc:
      http://br2.php.net/DirectoryIterator
      Infelizmente não tenho nenhum exemplo aqui que alterna a ordem.
      até,

  6. Luis Claudio janeiro 15, 2011 às 7:19 pm

    Mais uma vez, parabéns pela praticidade do script.
    Está 100% funcionando aqui, e será muito útil.
    Uma dúvida que fiquei é se tem como o filtro “pegar” mais tipos de arquivos de uma vez, e como ficaria a sintaxe. Como separo as extensões na linha: $filter = new FileFilter(“images”, “/jpg/”); ?
    Fiz alguns testes mas não consegui.
    Obrigado.

    • Rafael Clares janeiro 18, 2011 às 1:38 pm

      Olá, desculpe a demora ao responder, estive ausente um pouco.
      Bem, basta mudar um pouco os métodos, seria assim:

      class FiltraArquivos {

      private $diretorio;
      private $filtro;

      public function __construct($diretorio) {
      $this->diretorio = $diretorio;
      }

      public function imprimeResultado($filtro) {
      $this->filtro = $filtro;
      $diretorio = new DirectoryIterator($this->diretorio);
      $filtro = new RegexIterator($diretorio, $this->filtro);
      foreach ($filtro as $arquivo) {
      print "$arquivo\n";
      }
      }
      }
      $filtra = new FiltraArquivos("images");
      $filtra->imprimeResultado("/jpg/");
      $filtra->imprimeResultado("/png/");

  7. Roger setembro 28, 2012 às 8:49 pm

    Cara eu tenho uma duvida eu tenho este codigo e nao consigo listar em ordem numerica
    <?php

    $url="caminho";
    $dir = "diretorio";
    if(is_dir($dir)){
    $handle=opendir($dir);
    while(false !== ($file = readdir($handle))){

    if($file=='.' || $file=='..' || $file == "Thumbs.db") continue;

    $html .= "

    “;
    }

    }

    echo $html;
    ?>

    • Rafael Clares setembro 28, 2012 às 8:55 pm

      Véi aqui não dá pra postar código, fica ilegível. Coloca no pastebin.com e me manda o link.;
      abs

Os comentários estão desativados.

%d blogueiros gostam disto: