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.

Tags:  Comandos PHP | PHP

Comentários

Sua foto do perfil

Gabriel Meinberg Renó

Muito Bom o Tutorial, simples e bem explicado

24 de Fevereiro de 2016 - 18:05

Sua foto do perfil

Rafael Casanova

15 de Fevereiro de 2016 - 10:25

Sua foto do perfil

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

Sua foto do perfil

Arthur

12 de Janeiro de 2016 - 17:12

Sua foto do perfil

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

Sua foto do perfil

William

06 de Janeiro de 2016 - 14:42

Sua foto do perfil

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

Sua foto do perfil

GUILHERME IGOR FERNANDES DE SOUZA GARCIA SERRANO

26 de Outubro de 2015 - 13:26

Sua foto do perfil

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

Sua foto do perfil

mayki

12 de Março de 2015 - 17:33

Sua foto do perfil

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

Sua foto do perfil

Domingos Coelho

10 de Março de 2015 - 11:40

Sua foto do perfil

Mauricio Programador

Verdade Domingos,

Obrigado pela contribuição.

Abraço

11 de Março de 2015 - 11:41

Sua foto do perfil

Naldo

03 de Março de 2015 - 21:15

Sua foto do perfil

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

Sua foto do perfil

Uhelliton Andrade Silva

11 de Janeiro de 2015 - 00:05

Sua foto do perfil

Edcarlo Lima

14 de Outubro de 2014 - 12:58

Sua foto do perfil

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

Sua foto do perfil

Leandro

20 de Julho de 2014 - 08:44

Sua foto do perfil

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

Sua foto do perfil

Luiz

01 de Junho de 2014 - 00:03

Sua foto do perfil

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

Sua foto do perfil

heitor

Boa tarde amigo
vc poderia me mandar as pastas
Obrigado

07 de Maio de 2014 - 16:37

Sua foto do perfil

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

Sua foto do perfil

MARCELO BRANCO

30 de Abril de 2014 - 14:08

Sua foto do perfil

Lucas

03 de Abril de 2014 - 10:26

Sua foto do perfil

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

Sua foto do perfil

Dante Marcelo

31 de Janeiro de 2014 - 11:10

Sua foto do perfil

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

NEWSLETTER

Receba dicas de programação
em seu e-mail

TWITTER

Acompanhe tudo o que rola
com Mauricio Programador

NEWSLETTER