Listar diretórios recursivamente

Enviada por vinicius matias 
vinicius matias
Listar diretórios recursivamente
02 de January de 2007 às 12:59PM
bem gente criei o seguinte script em php ele lista os diretórios e os arquivos, e faz isso de modo recursivo, conforme vc for clicando nos diretorios, ele continua listando os arquivos internos.
O script já está pronto e estou colocando aki para vcs, só está com um problema que eu gostaria que vcs me ajudassem, não consigo visualizar o tamanho dos arquivos quando está em alguma pasta interna da erro de status arquivo nao encontrado, mais se ele nao fosse encontrado não apareceria o nome dele com o link para baixar inclusive na lista. não é estranho????

dêem uma olhada e me digam algo, me ajudem por favor.

vlw ai

<?php
function listaArquivos($dir){
// abre o diretório
$ponteiro = opendir($dir);
// monta os vetores com os itens encontrados na pasta
while ($nome_itens = readdir($ponteiro)) {
$itens[] = $nome_itens;
}
// 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;
}
}
}
// lista as pastas se houverem
echo '<table border="1" style="border:1px solid #666666;border-collapse: collapse;">';
echo '<tr><td>Nome</td><td>Tamanho</td><td>Tipo</td>';
if ($pastas != "" ) {
foreach($pastas as $listar){
print "<tr>\n";
print " <td><IMG SRC=/icons/folder.gif ALT=[DIR]><a href=".$_SERVER['PHP_SELF']."?pagina=lista_arquivos.php&dir=".$listar.">".$listar."</a><br></td>";
echo "<td></td><td> Diretório </td>";
echo "</tr>";
}
}
// lista os arquivos se houverem
if ($arquivos != "") {
foreach($arquivos as $listar){
echo "<tr>";
print "<td><IMG SRC=/icons/generic.gif ALT=[DIR]><a href='$listar'>$listar</a><br></td>";
$arquivo = pathinfo($listar);
echo "<td>".filesize(basename($listar))." Bytes</td>";
echo "<td>Arquivo ".$arquivo['extension']."</td>";
clearstatcache();
}
}
echo "</table>";
}
echo '<h3 class="titulo">Listagem de Arquivos presentes no diretório atual:</h3>';
$diretorio = $_GET['dir'];
if ($diretorio == "") {
listaArquivos(".");
} else {
listaArquivos($diretorio);
}
?>
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.