Frage zu if (file_exists (upload service)

DLR

Grünschnabel
ich habe einen upload service gemacht und möchte das, falls eine gleichnamige datei schon vorhanden ist, das einfach "_1" bzw "_2" und so weiter an den NEUEN datei namen angehängt wird! jedoch klappt das nicht ! mein code sieht bisher so aus"

PHP:
if (file_exists($path . $HTTP_POST_FILES['userfile']['name']))
{
rename($HTTP_POST_FILES['userfile']['name'], $HTTP_POST_FILES['userfile'].$count.['name']);

$count = 0;
for ($i=1; $i == $i; $i++)

}

kann mir da bitte jemand weiterhelfen?
 
Im prinzip musst du nur alles in eine Funktion packen und dann jedesmal mittels Rekursion überprüfen ob der Dateiname um 1 erhöht schon existiert ansonsten kann man die Datei so nennen.

PHP:
<?php
function new_file_name ($datei)
{
$i = 0;
if (file_exists ($datei))
{
new_file_name ($datei . "_" . $i++)
}
else
{
rename ($_FILES['userfile']['name'], $datei);
}
?>
 
Mein Vorschlag:
PHP:
function upload_moveFile( $source, $dest, $overwrite=false )
{
	$source = realpath($source);
	$dest = realpath($dest);
	$suffixNumber = 1;
	while( $overwrite != true && is_file($dest) ) {
		$suffixNumber++;
		$pathinfo = pathinfo($dest);
		$dest = $pathinfo['dirname'] . '/';
		if( !isset($pathinfo['extension']) ) {
			$dest .= $pathinfo['basename'] . '-'.$suffixNumber;
		} else {
			$dest .= substr($pathinfo['basename'], 0, -1 * strlen($pathinfo['extension']) - 1) . '-'.$suffixNumber . '.' . $pathinfo['extension'];
		}
		$dest = realpath($dest);
	}
	return move_uploaded_file($source, $dest);
}
 
Zurück