Codice PHP:
function rename_existing_file($filename$dir)
{
    
$parts explode('.'$filename);
    
$newname $parts[0].'-.'.$parts[1];
    
    if( 
file_exists($dir.$newname))
    {
        return 
rename_existing_file($newname$dir);
    }
    else
    {
        return 
$newname;
    }

Ovviamente dovete controllare prima che $_FILES['upload']['name'] esista nella directory di destinazione. Io aggiungo - come token di differenziazione, ma basta sostituire nella funzione il token che preferite (anche un valore progressivo).



EDIT: per ora questa funzione non prevede il caso in cui il file abbia dei punti (.) nel nome...ma è facilmente risolvibile.