How to check if a file exists in several different folders?

4

I need a PHP script that checks if a file exists in a folder, if it does not exist it checks on the next and so on ... I do not mess around with PHP so I'm a little lost.

I've tried to do with switch too but I could not.

<?php       
#checagem da existencia do arquivo em varias pastas diferentes

$imagem = foto.jpg;
$filename = "img/$imagem";
$filename_dois = "img-2/$imagem";
$filename_tres = "img-3/$imagem";
$filename_quatro = "img-4/$imagem";
$filename_cinco = "img-5/$imagem";

if (file_exists($filename)) {echo "<a href='img/$imagem' rel='shadowbox[cart]'>  <img src='timthumb.php?src=img/$imagem_da_certidao&h=150&w=200' /> </a>";} else
{(file_exists($filename_dois)) {echo "<a href='img-2/$imagem' rel='shadowbox[cart]'>  <img src='timthumb.php?src=img-2/$imagem&h=150&w=200' /> </a>";}}
else
{(file_exists($filename_tres)) {echo "<a href='img-3/$imagem' rel='shadowbox[cart]'>  <img src='timthumb.php?src=img-3/$imagem&h=150&w=200' /> </a>";}}
else
{(file_exists($filename_quatro)) {echo "<a href='img-4/$imagem' rel='shadowbox[cart]'>  <img src='timthumb.php?src=img-4/$imagem&h=150&w=200' /> </a>";}}
else
{(file_exists($filename_cinco)) {echo "<a href='img-5/$imagem' rel='shadowbox[cart]'>  <img src='timthumb.php?src=img-5/$imagem&h=150&w=200' /> </a>";}}
?>
    
asked by anonymous 12.03.2014 / 17:10

3 answers

2

Do this:

So it is more friendly to add new folders, then put the IMG and the link of the image where indicated.

<?php
// nome do arquivo
$imagem = "foto.jpg";

// aqui você pode adicionar várias pastas
$pastas = array(
    "img"=>$imagem, 
    "img-2"=>$imagem
    // ...
);

// percorre todas as pastas
foreach($pastas as $pasta => $imagem){
    // verifica se o arquivo existe
    if (file_exists($pasta . DIRECTORY_SEPARATOR . $imagem)) {
        // insira sua imagem aqui
        print $pasta . DIRECTORY_SEPARATOR . $imagem;
    }
}
?>  
    
12.03.2014 / 17:23
1
<?php
$arquivo = "foto.jpg";
$diretorios = array('img', 'img-2', 'img-3', 'img-4', 'img-5');

foreach ($diretorios as $dir)
{
    if (file_exists("{$_SERVER['DOCUMENT_ROOT']}/{$dir}/{$arquivo}"))
    {
        echo "<a href='{$dir}/{$arquivo}' rel='shadowbox[cart]'><img src='timthumb.php?src={$dir}/{$arquivo}&h=150&w=200' /></a>";
        break;
    }
}
    
14.03.2014 / 00:13
1

I have created this function to recursively check from a home directory, how many times a file exists and what directory it is in. Despite the time, see if it helps!

function listarArquivos($diretorio, $nomeArquivo) {
    $encontrados = "";
    $ponteiro = opendir($diretorio);

    while ($nome_itens = readdir($ponteiro)) {
        $itens[] = $nome_itens;
    }

    sort($itens);

    foreach ($itens as $listar) {
        if ($listar != "." && $listar != "..") {
            if (is_dir($diretorio . '/' . $listar)) {
                $encontrados .= listarArquivos($diretorio . '/' . $listar, $nomeArquivo);
            } else {
                if (preg_match('/' . $nomeArquivo . '/i', $listar)) {
                    $encontrados .= $diretorio . '/' . $listar . " <br> ";
                }
            }
        }
    }

    return $encontrados;
}
    
09.06.2015 / 19:29