Auge: Bild kopieren

Beitrag lesen

Hallo

Du setzt den Pfad ($source), den Token (ohne „c“) ($tocken_foto) und die Endung ($kl) zusammen, kannst jedoch nicht den Token ($tocken_foto) und die Endung ($kl) ohne Pfad zusammensetzen?

ich habe es jetzt so zusammengesetzt

	$kl = strstr($p_bild, '.');
	$source = "img/produkte/";
	$file = $source.$p_bild;
	$p_bild = $source.$tocken_foto.$kl;
	copy($file, $p_bild);
	$p_bild = $tocken_foto.$kl;

Anders bekomme ich es nicht hin.

Erst den Namen in einer Variable zu speichern, die dir auch später zur Verfügung steht, und erst dann den gesamten Pfad für die Verwendung in copy zusammenzusetzen, geht nicht?

Scheint aber zu funktionieren.

Ja, bis die Kopie mal nicht erstellt werden kann. Dann wird der Dateiname in der Datenbank gespeichert, obwohl es diese Datei nicht gibt. Wenn jemand einen Dateinamen mit mehreren Punkten im Namen hochlädt, ist dein Token auch nur noch Teil des Namens. Aus Produkt.Wunderbar.jpeg wird 157895463.Wunderbar.jpeg. Dabei geht zwar nichts kaputt, aber du solltest das bei der Größenangabe deins Datenbankfeldes beachten. Wäre ja nicht das erste Mal, dass sowas zu Problemen führt. Andererseits gibt es gerade für Bilder eine Funktion, die den MIME-Typ ermittelt, womit sich die Endung verlässlich festlegen lässt.

$source = 'img/produkte/';
$dateiname = $token.$kl;
$neuerPfad = $source.$dateiname;

$return = copy($alterPfad, $neuerPfad);

if ($return !== false) {
  // kopieren war erfolgreich
  // speichere den Namen in der Datenbank
} else {
  // kopieren ist gescheitert
  // erzeuge Fehlermeldung (Email, Log, WasWeißIch)
}

Tschö, Auge

--
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war. Terry Pratchett, “Wachen! Wachen!