Bilduploader überschreibt vorhandene Dateien

FelixLeupold

Grünschnabel
Hallo Leute,

mein Bildupload-Script funktioniert eigentlich super, nur eine Funktion fehlt mir noch. Wenn man eine Datei hochläd soll überprüft werden ob eine Datei mit diesem Namen schon existiert.
Wie kann ich das Realisieren?

Ich weiß schon das man es am besten mit file_exist macht, aber ich weis nciht wo ich das einbauen soll O.o?

Bitte helft mir :)

Funktion:
PHP:
<?php
// Bild hochladen
$datei_typ = array(".jpg",".gif",".png");
$datei_verz = "files"; // Verzeichniss // 
$datei_url = "http://www.xunity.de/directLoad"; // URL //
if($_POST) {
	$fupload = $_FILES['fupload'];

	$endung = false;
	$funktionsname = "imageCreateFrom";
	switch($fupload['type']) {
		case "image/jpeg":
			$endung = ".jpg";
			$funktionsname .= "JPEG";
		break;
		case "image/gif":
			$endung = ".gif";
			$funktionsname .= "GIF";
		break;
		case "image/png":
			$endung = ".png";
			$funktionsname .= "PNG";
		break;
		default:
			echo "<div align=center><font color=\"red\">Es sind nur Bilder im Format JPG, GIF oder PNG gestattet</font></div>";
		break;
	}
	if($endung)
	{
		$bilddatei = $datei_verz."/{$_POST['name']}";
		move_uploaded_file($fupload['tmp_name'], $bilddatei.$endung); 


// thumnail erstellen

					$kompress=60;
					$picsize = getimagesize($bilddatei.$endung);
                	$source_x = $picsize[0];
                	$source_y = $picsize[1];
                	$dest_x = 90;
                	$dest_y = ceil($source_y * $dest_x / $source_x);

                	$targetfile = "{$bilddatei}_thumb.jpg";
                	$source_id = $funktionsname($bilddatei.$endung);
                	$target_id = imagecreatetruecolor($dest_x, $dest_y);
                	$target_pic = imagecopyresampled($target_id,$source_id,0,0,0,0,$dest_x,$dest_y,$source_x,$source_y);
                	$speichern = imagejpeg($target_id,$targetfile,$kompress);


                	if (! $speichern) {echo "<div align=center><h1><font color=\"red\">Speichern fehlgeschlagen</font></h1></div>"; }
	                
		}

}
?>

Das Formular:

PHP:
<form enctype="multipart/form-data" action="<?php echo $_SERVER[PHP_SELF] ?>" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="1024000"><br>
<input style="font-size: 9pt; border-style:solid; border-width:1px; border-color:#006699 background-color:#FFFFFF" type="file" name="fupload">

<br>
Bitte geben Sie einen Bildnamen an:<br>
<input style="border-width:1px; border-style:solid; font-size: 9pt; border-color:#006699" type="text" name="name" size=30>
<br>
<br>
<input style="font-size: 9pt; border-style:solid; border-width:1px; border-color:#006699 background-color:#FFFFFF" type="submit" value="Verschicken">
</form>
 
PHP:
$bilddatei = $datei_verz."/{$_POST['name']}";
if (!file_exists ($bilddatei.$endung)) {
  move_uploaded_file($fupload['tmp_name'], $bilddatei.$endung);
}
 
Hi!

Erstens würde ich mich nicht darauf verlassen, welchen Dateityp dir der Browser mitteilt. Benutze lieber die Funktion getimagesize(filename); und guck dann in den Array-Index 2.

Den Überspeichern-Schutz würde ich vorm speichern der Datei machen, also vor dem move_uploaded_file($fupload['tmp_name'], $bilddatei.$endung);.

Das sieht dann irgendwie so aus:
PHP:
if (file_exists($bilddatei.$endung) && ueberschreiben == false)
  echo 'Datei existiert schon!';
else
  move_uploaded_file(...);

Mamphil

EDIT: Da war einer schneller, wenn auch nicht so ausführlich ;)
 
Zurück