Hochgeladenes Bild mit PHP speichern

Bild vom Nutzer tatsächlich am Server speichern

Den Beginn beim Durcharbeiten des Praxisbeispieles macht die Analyse des hochgeladenen Bildes. Wir konzentrieren uns dabei nur auf die Bildbearbeitung. Wie man ein Formular erstellen kann, mit dem auch Bilder hochgeladen werden können, ist im HTML-Teil bei den Formularen ein Thema, sollte jetzt aber als bekannt vorausgesetzt werden.

Ein Nutzer hat die Seite besucht, sich als Mitglied eingeloggt und ist berechtigt, einen neuen Eintrag samt Bild zu erstellen. Die Aufgabenstellung besteht nun darin, dass das Bild zwar hochgeladen worden ist, aber damit steht es noch nicht für weitere Besucher zur Verfügung.

Hochgeladenes Bild in PHP verarbeiten und speichern

Das Praxisbeispiel hat folgendes Aussehen:

<?php
$bild_name = $_FILES["bild"]["name"];
$original = $_FILES["bild"]["tmp_name"];
copy ($original, "Pfad zum Verzeichnis/$bild_name");
$image_p = imagecreatetruecolor(100, 100);
$image = imagecreatefromjpeg("Pfad zum Verzeichnis/$bild_name");
imagecopyresampled($image_p, $image, 0, 0, 0, 0, 100, 100, 400, 400);
imagejpeg($image_p, "Pfad zum Verzeichnis/thumb/$bild_name", 100);
?>

Wir konzentrieren uns im ersten Schritt auf das hochgeladene Bild. Ein Besucher hat ein Bild über ein Formular an den Server geschickt - eine andere denkbare Variante ist, dass über eine Verwaltung von einem Projektmitglied ein Bild hochgeladen wurde.

Wie auch immer - auf dem Server gibt es ein neues Bild. Wie auf der Einstiegsseite besprochen, gehen wir davon aus, dass das Bild fix 400 x 400 Pixel groß ist und damit brauchen wir uns um die Größe des Bildes nicht kümmern. Natürlich kann man die Größe auch mit Abfragen analysieren, doch das ist jetzt nicht unser Thema.

Die ersten beiden Zeilen des Praxisbeispieles fragen das hochgeladene Bild einmal ab.

$bild_name = $_FILES["bild"]["name"];
$original = $_FILES["bild"]["tmp_name"];

Mit $_FILES kann jede Art von Datei abgefragt werden, die über ein Formular geschickt wird. Das Array ["bild"] teilt dem Server mit, dass wir nur an Bildinformationen interessiert sind. Von daher arbeiten beide Befehle gleich, aber ["name"] liefert den Dateinamen, ["tmp_name"] hingegen den Pfad zum Temp-Verzeichnis, wo das Bild zwischengespeichert wurde. Diese Unterscheidung ist wesentlich.

Wenn man zum Beispiel die Bilder in verschiedenen Verzeichnissen ablegen möchte, hilft die so erstellte Variable $bild_name, damit man den späteren Pfad manipulieren kann. Man könnte nun den Bildnamen durch

$bild_name = "irgendwo/links/hinten/".$bild_name

erweitern, wobei die genannten Verzeichnisse aber am Server auch gegeben sein müssen. Die Variable $bild_name ist daher für die Bezeichnung und eventuelle Manipulationen nötig, $original brauchen wir, um das Bild in der Originalgröße speichern zu können. Dafür gibt es die dritte Zeile im Praxisbeispiel.

copy ($original, "Pfad zum Verzeichnis/$bild_name");

Hiermit kopieren wir das Bild vom vorübergehenden Speicherplatz ($original) zu jenem Verzeichnis, wo wir das Bild haben wollen. Nehmen wir an, der Pfad zum Root ist /var/www/web

/var/www/web

lauten. Mit dieser Aktion haben wir das hochgeladene Bild bei Bedarf im Namen verändert und auf jeden Fall am richtigen Platz gespeichert. Würden wir per FTP am Server nachschauen, müsste das Bild im angeführten Verzeichnis (hier: bilder) zu finden sein.

Lesen Sie auch

PHP + Bild ist eine Lösung, die für manche Einsteiger sehr schwierig wirkt, aber es gar nicht unbedingt sein muss. Nicht selten hat man es mit hochgeladenen Bildern zu tun, die es zu verarbeiten gilt. Sie müssen am richtigen Ort gespeichert werden und man braucht vielleicht ein Vorschaubild. Das externe Bild muss einmal verstanden werden und seine Dimensionen erkannt sein.

Dann gilt es, ein Vorschaubild zu erzeugen, das automatisch von einem Skript aufgebaut und gespeichert werden kann, wenn ein Nutzer ein neues Bild hochgeladen hat.

Diesen Artikel teilen

Kategorien

Grundlagen
HTML-Grundlagen
CSS-Grundlagen
Javascript-Grundlagen
PHP-Grundlagen
MySQL-Grundlagen
SEO-Grundlagen

Infos, Tipps, Vermarktung
Webdesign-Lexikon
Online-Werbung
PHP-Codeschnipsel