Das Bild vom Benutzer erhalten
Siehe http://php.net/manual/en/reserved.variables. files.php
und http://php.net/manual/en/features.file- upload.php
und Freunde für die Daten zur Verwendung von $_FILES
um das hochgeladene zu erhalten.
Sobald Sie das Bild in einer Variablen haben, sagen Sie $jpg
, verwenden Sie keine Funktionen zum Kodieren/Dekodieren von Text; es wird nur Dinge zerfleischen. Die verschiedenen Ansätze unten sagen, was zu tun ist, um das Stolpern über 8-Bit-Codes zu vermeiden.
Es gibt drei Möglichkeiten, das Bild zu präsentieren, jede davon ist etwas komplex
Speichern des Bildes in der Datenbank; Bild inline anzeigen
Ich habe diesen Ansatz für Thumbnails verwendet, aber nicht für große Bilder empfohlen.
Speichern Sie es in einem MEDIUMBLOB
Verwenden Sie in einer Tabelle bin2hex()
in PHP, um das Bild in einen String umzuwandeln. Verwenden Sie dann INSERT ... VALUES (UNHEX('...'))
um auf der Seite des MySQL-Servers wieder auf binär umzuschalten.
Lassen Sie nach dem Neuladen das referenzierende PHP so etwas wie
sagen$b64 = base64_encode($blob);
echo "<img src='data:image/jpeg;base64,$b64'/>";
Speichern des Bildes in der Datenbank; PHP-Skript zum Generieren von Bildern
Ich verwende dies, wenn ich die "image*"-Funktionen von PHP verwenden möchte, um das Bild zu ändern, bevor es angezeigt wird. Da dies komplizierter ist, als Sie wahrscheinlich brauchen, werde ich nur überfliegen, was getan werden muss.
Der HTML-Code für die Seite würde ein anderes Skript aufrufen, mit allen Argumenten, die Sie benötigen:
<img src=modify.php?this=stuff&that=stuff>
Dann in modify.php
, beginnen Sie mit
header('Content-type: image/jpeg');
Und enden Sie damit (vorausgesetzt, Sie erstellen ein JPEG):
imagejpeg($im);
Speichern des Bildes in einer Datei
Dies ist die bevorzugte Methode, die die meisten großen Websites die meiste Zeit verwenden.
Wenn Ihre Datei aus einem Upload stammt, verschiebt sie so etwas in einen besseren Pfad, ohne dass Sie das JPG berühren müssen.
$tmpfile = $_FILES['userfile']['tmp_name'];
move_uploaded_file($tmpfile, $uploadfile);
Weitere Informationen und Beispiele:http://php.net/manual/ de/function.move-uploaded-file.php
Generieren Sie im HTML einfach so etwas:
<img src=path/to/file>
Recherchieren Sie, wo im Pfad Ihres Servers Sie Bilder ablegen können, und stellen Sie sicher, dass die Berechtigungen angemessen sind.
Hinweis:Die Datenbank ist nicht am Speichern des Bildes beteiligt, stattdessen hat sie eine Spalte zum Speichern der URL "path/to/file"
:
image VARCHAR(255) NOT NULL
Zur weiteren Diskussion
- Welche der 3 Techniken möchten Sie näher vertiefen?
- Sehen wir uns den HTML-Code an, den Sie generieren.
- Schauen wir uns
SHOW CREATE TABLE
an .