Grafik in Datenbank speichern?

Suchfunktion

Erfahrenes Mitglied
Hallo!

Ich wollte nurmal nachfragen,
wie ich Grafiken in meiner MySQL-Datenbank speichern kann!?

Hat da jemand mal einen Link fuer mich?

Thanks. :)
 
Du schreibst dir ein Formular, legst eine Tabelle in der DB an mit dem Feld "image", Typ "longtext" und bei der Formularverarbeitung speicherst du das Bild dann so:

Code:
$tempname = $_FILES['file']['tmp_name'];

$image = base64_encode(fread(fopen($tempname, "r"), filesize($tempname)));
echo "Das Bild wurde erfolgreich hochgeladen.";

Bei der Ausgabe des Bildes:

Code:
//Header & Bild ausgeben
echo Header("Content-Type: image/jpg");
echo base64_decode($data['pimage']);

Alternativ kannst du noch andere Header setzen und es geht auch mit dem Feld Typ "blob". Da das ganze so bei mir aber problemlos läuft, bleib ich auch dabei :o
 
Ich denke nicht, dass longtext die richtige wahl ist, um binärddaten zu speichern, vorallem in anbetracht dessen, dass es ja einen Datentyp für diese Anwedung gibt. Nämlich blob.

Man Stelle sich nur mal vor, was passiert, wenn der Inhalt des longtext irgendwo auf dem Weg zum Script als utf-8 oder ASCII interpretiert wird, weil er eben als Text und nicht als Binärdaten markiert ist.

Wobei man für gewöhnlich Datenbanken nicht zum speichern von Binärdaten verwendet. Aber wenn man unbedingt will... ;)
 
1. Beitrag bis zum Ende lesen.
2. Speicher ich keine Binärdaten sondern ASCII. Die einzigen Sonderzeichen die vorkommen sind "+" und "/"
 
Oh, tatsächlich, dass die Daten von dir Bas64 Encoded werden hab ich übersehen.

Allerdings könnte man sich durch Verwendung von blob das hin und her konvertieren sparen. Damit die Serverlast bedeutend senken (derartige Operationen sind sehr Rechenaufwendig, vorallem bei größeren Dateien) und evtl. gerät einem dann irgendwann das execution time limit in die quere.
 
Zurück