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]