Olá! Thursday, 10 de October de 2024.



Dicas CódigoFonte.net
Saturday, 01 de September de 2007

Listando arquivos forma complexa

Quando o assunto é manipulação de arquivos dentro de um servidor, muita coisa pode ser feita. Inclusive para os administradores, alguns scripts são realmente úteis, como o que vamos ver a seguir.

O script que vou apresentar, é uma forma prática de listar as pastas e arquivos de um diretório (diretório este, que deverá ser remoto, ou seja, online), mostrando visualmente o que é pasta, e o que é arquivo.
Facilidade esta, que pode ser adicionada à um script de download, envio por email, etc.

Vou trabalhar aqui, com algumas funções pouco utilizadas, ou melhor dizendo, pouco exploradas.
São elas:
getcwd: http://www.php.net/manual/pt_BR/function.getcwd.php
opendir: http://www.php.net/manual/pt_BR/function.opendir.php
readdir: http://www.php.net/manual/pt_BR/function.readdir.php
sort: http://www.php.net/manual/pt_BR/function.sort.php
is_dir: http://www.php.net/manual/pt_BR/function.is-dir.php

getcwd: obtém o diretório atual
opendir: abre o diretório informado no getcwd
readdir: lê o diretório abe rto

Então esta é a primeira parte:


O que fizemos aqui, foi justamente, pegar o diretório, abri-lo e lê-lo.

Continuando, vamos usar:

sort: ordena os vetores (arrays), de acordo com os parâmetros informados. Aqui estou ordenando por pastas e depois arquivos

// ordena o vetor de itens sort($itens); // percorre o vetor para fazer a separacao entre arquivos e pastas foreach ($itens as $listar) { // retira "./" e "../" para que retorne apenas pastas e arquivos if ($listar!="." && $listar!=".."){ // checa se o tipo de arquivo encontrado é uma pasta if (is_dir($listar)) { // caso VERDADEIRO adiciona o item à variável de pastas $pastas[]=$listar; } else{ // caso FALSO adiciona o item à variável de arquivos $arquivos[]=$listar; } } }

Vimos acima, a expressão is_dir, indicando que as ações devem esntão ser executadas, ali mesmo, no diretório que já foi aberto e lido. As ações que executamos ali, foram: ver se tem pastas, listar. Ver se tem arquivos, listar.

Agora, se houverem pastas, serão apresentadas antes dos arquivos, em odem alfabética.
Se não houverem, serão apresentados apenas os arquivos, na mesma ordem.
E se houverem os dois, serão mostrados igualmente.

// lista as pastas se existirem if ($pastas != "" ) { foreach($pastas as $listar){ print "Pasta: $listar";} } // lista os arquivos se houverem if ($arquivos != "") { foreach($arquivos as $listar){ print " Arquivo: $listar";} } ?>

O que você pode fazer, para melhorar um código como este: adicionar links às pastas e arquivos, podendo então fazer download, ou enviar um deles por email, por exemplo.

Também poderá adicionar um contador, para saber quantos arquivos tem, quantas pastas também.
Ou ainda: calcular o espaço que os arquivos estão tomando neste diretório, utilizando conjugadamente as funções filesize (ler tamanho do artigo) e disk_total_space (ver tamanho total do diretório) - Ambas funções, abordarei em outro artigo.

Todos os direitos reservados a [inter]Flavia Jobstraibizer [/inter]

Comentários do artigo [Novo comentário]

Flavia Jobstraibizer - 06 de June de 2008 - 10:01
Pois é colega, como este artigo É MEU, escrito por mim, acho que antes de sair roubando artigos, por favor, dê os devidos créditos, pois você simplesmente copiou meu artigo publicado em 2006 no: http://www.revistaphp.com.br/artigo.php?id=48 e nem se deu ao trabalho de alterar nada. Se não tem capacidade pra criar algo seu, não roube de mim! Obrigada!
Flavia Jobstraibizer - 06 de June de 2008 - 10:02
Agradeço à direção do site, que colocou os devidos créditos ao meu artigo. Jamais copio nada de ninguem pois tenho capacidade suficiente pra escrever coisas novas e de minha própria autoria. O site mostrou ser sério em dar os créditos devidos ao verdadeiro autor do artigo. Obrigada!
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:


CodigoFonte.net » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010