Atualizado em 20 de Maio de 2013
Listar Arquivos Diretório PHP
Olá pessoal,Neste post vamos ver como listar arquivos de um diretório com PHP, isso nos possibilita diversas finalidades, entre elas podemos destacar: criar sitemaps, adicionar links as pastas e arquivos entre outros.
Em nosso exemplo vamos fazer uma lista com todos os arquivos de uma pasta criando link para os mesmo. Vamos ao exemplo:
<?php
$pasta = 'imagens/';
if(is_dir($pasta))
{
$diretorio = dir($pasta);
while(($arquivo = $diretorio->read()) !== false)
{
echo '<a href='.$pasta.$arquivo.'>'.$arquivo.'</a><br />';
}
$diretorio->close();
}
else
{
echo 'A pasta não existe.';
}
?>
Explicando o script:
Na linha 2 criamos uma variável que leva o nome da pasta na qual vamos fazer a leitura dos arquivos. Já na linha 4 verificamos se o nome da pasta que foi informado e realmente o caminho de um diretório.
Na Linha 6 criamos uma instância do diretório através do comando dir, após isso entre as linhas 8 e 11 começamos uma laço de repetição que irá percorrer toda a pasta listando os arquivos e criando links para os mesmo.
Pra finalizar na linha 13 fechamos a instância criada anteriormente (linha 6).
E isso aà pessoal, até a próxima.
Gostou do post, continue por dentro das dicas de programação!!! Assine a newsletter.
Comentários

Gabriel Meinberg Renó
Muito Bom o Tutorial, simples e bem explicado
24 de Fevereiro de 2016 - 18:05

Rafael Casanova
15 de Fevereiro de 2016 - 10:25

Mauricio Programador
Olá Rafael,
Sites como globo, terra entre outros não dão permissão para que façamos isso.
Existe uma configuração que os programadores fazer dentro de um arquivo chamado .htaccess para proteger este tipo de ação.
Para saber se o site deixa ou não fazer isso, basta coloca o endereço da pasta na barra de endereço do navegador e ver se ele exibe a listagem dos arquivos.
Abraço.
19 de Fevereiro de 2016 - 14:54

Arthur
12 de Janeiro de 2016 - 17:12

Mauricio Programador
Olá Arthur,
Você pode usar um código dentro do arquivos .htaccess para que usuários não possam visualizar o conteúdo que esta dentro da pasta quando tentarem acessar a pasta diretamente, mas dentro do HTML ele precisa ter para poder buscar o arquivos no seu local de origem.
Abraço.
13 de Janeiro de 2016 - 15:30

William
06 de Janeiro de 2016 - 14:42

Mauricio Programador
Olá William,
lhe sugiro que faça paginação com o banco de dados, vai passar menos trabalho.
Abraço.
13 de Janeiro de 2016 - 15:15

GUILHERME IGOR FERNANDES DE SOUZA GARCIA SERRANO
26 de Outubro de 2015 - 13:26

Mauricio Programador
Olá Guilherme,
O meu sistema de comentário bloqueai quando o usuário coloca o código inteiro.
Coloque apenas a sua dúvida referente ao post acima para que eu posso visualizar e lhe responder de forma correta.
Abraço.
30 de Outubro de 2015 - 14:27

mayki
12 de Março de 2015 - 17:33

Mauricio Programador
Olá Mayki,
veja o post Listar Arquivos por Tipo com PHP, nele basta colocar a extensão que você quer que mostre na listagem.
abraço.
13 de Março de 2015 - 10:12

Domingos Coelho
10 de Março de 2015 - 11:40

Mauricio Programador
Verdade Domingos,
Obrigado pela contribuição.
Abraço
11 de Março de 2015 - 11:41

Naldo
03 de Março de 2015 - 21:15

Mauricio Programador
Olá Naldo,
Se você quiser somente limitar por um numero x pode colocar um contador.
$i = 1;
while($arquivo = $diretorio->read())
{
if($i == 5){
break;
}else{
...
$i++;
}
}
Se não ajudar me avisa.
Abraço.
04 de Março de 2015 - 09:19

Uhelliton Andrade Silva
11 de Janeiro de 2015 - 00:05

Edcarlo Lima
14 de Outubro de 2014 - 12:58

Mauricio Programador
Olá Edcarlo,
Veja se realmente o PHP esta lendo a pasta onde esta os arquivos, nesta linha:
$pasta = 'imagens/';
Abraço.
15 de Outubro de 2014 - 09:47

Leandro
20 de Julho de 2014 - 08:44

Mauricio Programador
Olá Leandro,
O pior e que as notÃcias não são das melhores (hehehehehe), arquivos que tenham em seu nome acentos, espaços e etc sempre darão problemas e não so neste tipo de operação.
Não a possibilidade de ajusta o script que gera os nomes?
Abraço.
21 de Julho de 2014 - 15:32

Luiz
01 de Junho de 2014 - 00:03

Mauricio Programador
Olá Luiz,
Enquanto o comando read() ler e devolver um arquivo o while será executado. E a variável arquivo pega o arquivo que o comando leu quando ele existir.
Abraço.
02 de Junho de 2014 - 13:59

heitor
Boa tarde amigo
vc poderia me mandar as pastas
Obrigado
07 de Maio de 2014 - 16:37

Mauricio Programador
Olá Amigo,
na verdade você pode fazer isso com qualquer pasta. Eu não tenho aqui mais a pasta deste exemplo, mas pode ser com qualquer uma que ele irá dar o retorno da mesma forma.
Grande abraço.
08 de Maio de 2014 - 10:00

MARCELO BRANCO
30 de Abril de 2014 - 14:08

Lucas
03 de Abril de 2014 - 10:26

Mauricio Programador
Olá Lucas,
faça uma pequena mudança no script, assim:
...
while($arquivo = $diretorio->read())
{
if($arquivo != '..' && $arquivo != '.')
{
echo '<a href='.$pasta.$arquivo.'>'.$arquivo.'</a><br />';
}
}
...
Abraço.
03 de Abril de 2014 - 10:52

Dante Marcelo
31 de Janeiro de 2014 - 11:10

Mauricio Programador
Olá Dante,
na verdade são dois comandos que realizam o mesmo processo, porém o glob() tem alguns parâmetros que podem ser usados para filtrar o tipo de arquivos que serão listados. Exemplo se você quiser pegar somente arquivos do tipo txt você colocaria assim glob("*.txt").
Grande abraço.
31 de Janeiro de 2014 - 11:18