• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Fabriziopt

Mostrar ficheiros de uma pasta

9 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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>";
    } 
} 
?> 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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>";
    } 
} 
?> 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu pus na pasta uploaded um ficheiro ola.txt.Não me esta a dar o erro mas não me aparece la nada...

Obrigado e abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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/",' ');

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

/* 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 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

/* 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.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

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