Jump to content

Mostrar ficheiros de uma pasta


Fabriziopt

Recommended Posts

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 😛

Link to comment
Share on other 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>";
    } 
} 
?> 

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other 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>";
    } 
} 
?> 

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other 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/",' ');
Link to comment
Share on other 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 ?

Link to comment
Share on other 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.

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other 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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.