BotecoDigital.info

Listando arquivos de um diretório em PHP


14/08/2009 Rodrigo Aramburu 1 Comentário

, , ,

Mostrei no meu último artigo como criar uma galeria de fotos utilizando JQuery e o plugin PrettyPhoto, mas ele tinha um problema, ou melhor uma dificuldade, para adicionar uma nova foto tínhamos que abrir o arquivo e acrescentar o código HTML para a nova foto. Para não termos esse tipo e trabalho que inventaram a informática :) .

Vamos ver então um simples script que lê um determinado diretório e monta a tag HTML para a imagem:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$dir = "fotos";
$d = opendir($dir);
$i = 0;
 
$nome = readdir($d);
while( $nome != false ){
	if( !is_dir($nome) and ($nome != 'Thumbs.db') ){
		$arquivos[$i] = $nome;
                $i++;
	}
	$nome = readdir($d);
}
sort($arquivos);
 
foreach($arquivos as $arq){
	echo '<img src="',$dir, " alt="" /> ';
}

Na linha 1 definimos o diretório que será lido e armazenamos em uma variável para facilitar a manutenção do código, na linha 2 abrimos um manipulador de diretório com a função opendir() que nos retorna um ponteiro para ser utilizado em funções posteriores.

Bom agora podemos percorrer o diretório, mas antes vamos iniciar um contador (linha 3) para podermos armazenar em um array os nomes dos arquivos para poder entre outras coisas ordená-los.

Na linha 5 começamos a ler os arquivos e fazemos isso utilizando a função readdir() que retorna o nome do próximo arquivo do diretório aberto com a função opendir. Na linha 6 entramos em um laço que executa enquanto o nome do arquivo retornado pela função readdir() não for falso, ou seja não tenha listado todos os arquivos do diretório.

Dentro do laço (linha 7) fazemos um teste, se o nome retornado não for um diretório ( com a função is_dir()) e se o nome for diferente de “Thumbs.db”, aqueles arquivos chatos e miniaturas do windows que as vezes upamos sem querer :(

Na linha 8 armazenamos o nome do arquivo no array e na linha 9 incrementamos nosso contador. fora do if lemos o próximo arquivo do diretório para o teste do while.

Na linha 13 utilizamos a função sort() para ordenar nosso array onde estão armazenados os nomes das imagens. Isto é muito útil principalmente se os nomes dos arquivos sejam seqüênciais e correspondem também a uma miniatura em outro diretório como é o mais indicado caso queiram utilizar esse script para criar uma galeria com o PrettyPhoto.

Agora basta juntar os nomes do arquivos do array com as tags para exibir as fotos como é feito na linha 16, utilizando um foreach para percorrer array.

Este script facilita bastante a vida principalmente se s galerias criadas forem grandes ou precisar adicionar fotos frequentemente, espero que tenham gostado quem quiser baixar o exemplo clique aqui.

Compartilhe:

  • Twitter
  • Rec6
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Blogplay
  • LinkedIn
  • Live
  • Netvibes
  • Reddit
  • Technorati
  • PDF
  • Print
  • email

Atualmente existe 1 Comentário

  1. Comentário de Frank Souza em 28/04/2010:

    Bacana, gostei, não irei utilizar com nenhuma galeria, mas para incrementar uma função que estou desenvolvendo.

    Muito obrigado e parabéns.

    abraço

Deixe um comentário








Boteco Digital | Todos os direios reservados