Pues .. puedes tener ese "if() con tu file_exists() en una función ... y otro código que elija aleatório el nombre del archivo en caso de que exista. Para esto te vendría bien usar algo de "recursividad".
Algo tipo:
Código PHP:
<?
function existe_archivo($archivo,$i=0){
if(file_exists($archivo)){
$i++;
$archivo=$archivo."_".$i;
existe_archivo($archivo,$i);
} else {
return $archivo;
}
}
echo "Nombre archivo que quedó: ".existe_archivo($upload_dir.$filename);
?>
No lo he probado .. pero debería ir si no me falla la recursividad. El ejemplo genera un nombre secuencial tipo:
nombrearchivo_n° desde 1 a N. si es que se va encontrando algo tipo nombrearchivo_1 .. genera nombrearchivo_2 .. etc ...
Un saludo,