Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Fabriziopt

Mostrar ficheiros de uma pasta

Mensagens Recomendadas

Fabriziopt    0
Fabriziopt

Boas

Tenho uma pasta no meu host (uploaded)onde são enviados ficheiros pelas pessoas que visitam o site.

Bem o meu problema é mostrar numa tabela os ficheiros dessa pasta.

Eu tentei o seguinte código:

<?php 
$dir = "/www/uploaded";

// Abre a pasta e faz um loop para mostrar o conteudo
if (is_dir($dir)) { 
if ($dh = opendir($dir)) { 
while (($file = readdir($dh)) !== false) { 
echo "filename: $file : filetype: " . filetype($dir . $file) . "\n"; 
} 
closedir($dh); 
} 
} 
?> 

Não sei se me fiz entender

Abraço :P

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

Supondo que o teu código funciona,

<?php 
$dir = "/www/uploaded";

// Abre a pasta e faz um loop para mostrar o conteudo
if (is_dir($dir)) { 
    if ($dh = opendir($dir)) { 
        echo "<table><tr><td>Filename</td><td>Filetype</td></tr>\n";
        while (($file = readdir($dh)) !== false) { 
            echo "<tr><td>$file</td><td>" . filetype($dir . $file) . "</td></tr>\n"; 
        } 
        closedir($dh);
        echo "</table>";
    } 
} 
?> 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Fabriziopt    0
Fabriziopt

Não.. aparece o seguinte:

Warning: filetype() [function.filetype]: Lstat failed for ./uploaded. in /home/a6483987/public_html/tutoriais.php on line 8

filename: . : filetype:

É do formato??

Abraço e obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

Tens de ignorar o ., o .. e as pastas.

<?php 
$dir = "/www/uploaded";

// Abre a pasta e faz um loop para mostrar o conteudo
if (is_dir($dir)) { 
    if ($dh = opendir($dir)) { 
        echo "<table><tr><td>Filename</td><td>Filetype</td></tr>\n";
        while (($file = readdir($dh)) !== false) { 
            if($file == '.' || $file == '..') continue;
            if(is_dir($file)) continue;
            echo "<tr><td>$file</td><td>" . filetype($dir . $file) . "</td></tr>\n"; 
        } 
        closedir($dh);
        echo "</table>";
    } 
} 
?> 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zero-cool    0
zero-cool

Viva,

Este exemplo cria uma lista. Penso que poderás adaptar com o que pretendes:

function FolderTree($dir,$prefix) {
$handle = opendir($dir);
while ($file = readdir($handle)) {
        if ($file != '..' && $file != '.' && !is_dir($dir.'/'.$file)) {
        // É um ficheiro
        } else if (is_dir($dir.'/'.$file) && $file != '..' && $file != '.') {
        // É uma pasta
            echo "<br>$prefix $file";
            FolderTree($dir.'/'.$file,$prefix.' ');
        }
    }
}

FolderTree("/www/upload/",' ');

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gurzi    2
Gurzi

/* This is the correct way to loop over the directory. */
    while (false !== ($file = readdir($handle))) {
        echo "$file\n";
    }

    /* This is the WRONG way to loop over the directory. */
    while ($file = readdir($handle)) {
        echo "$file\n";
    }

alguem sabe porque dizem isto no php.net ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

/* This is the correct way to loop over the directory. */
    while (false !== ($file = readdir($handle))) {
        echo "$file\n";
    }

    /* This is the WRONG way to loop over the directory. */
    while ($file = readdir($handle)) {
        echo "$file\n";
    }

alguem sabe porque dizem isto no php.net ?

Se não me engano, é porque nas condições ele converte as variáveis para boolean, e "false" e "0" e 0, por exemplo, convertem para bool(false), daí se usar o !== para fazer strict check e evitar esse possível erro.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Fabriziopt    0
Fabriziopt

Entao fica

function FolderTree($dir,$prefix) {
$handle = opendir($dir);
while (false !== ($file = readdir($handle))) {
        if ($file != '..' && $file != '.' && !is_dir($dir.'/'.$file)) {
        // É um ficheiro
        } else if (is_dir($dir.'/'.$file) && $file != '..' && $file != '.') {
        // É uma pasta
             echo "$file\n"; 
            FolderTree($dir.'/'.$file,$prefix.' ');
        }
    }
}

FolderTree("/www/upload/",' ');

Obrigado e abraço

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade