Bild in MySQL BLOB

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bild in MySQL BLOB

    Hallo zusammen, ich habe eine kurze Frage:

    Ich möchte ein Bild in ein MySQL BLOB Feld speichern
    und es wieder ausgeben.

    Das ist an sich auch kein Thema.

    Hab genug darüber bei Google gefunden:

    Beispielsweise:

    http://www.phpbuilder.com/columns/florian19991014.php3

    Aber:

    Ich hätte gern, das ich ein von PHP erzeugtes Bild
    direkt und ohne zwischenspeichern und anschließendes löschen
    in die DB schreiben kann.

    Kurzfassung:

    $img = imagecreatefromjpeg('test.jpg');
    mysql_query("INSERT INTO bin_data (data) VALUES ('$img')");

    Das funktioniert aber bis jetzt nicht.
    Ich muss das erzeugte Bild speichern,
    nach dem Schema aus dem Artikel einlesen,
    in MySQL speichern und das Bild löschen.

    Hat jemand eine Idee.
    Wäre eine große Hilfe !

    Danke im Vorraus !

    MfG

  • #2
    Ich vermute es ist mit imagejpeg() möglich, allerdings müsste man die Ausgabe unterdrücken, da sonst das Bild binär dargestellt wird.

    Kommentar


    • #3
      PHP-Code:
      //---- PART 1 vorbereiten für das Speichen in der DB
      // direktes laden
      $daten mysql_real_escape_string(file_get_contents('test.jpg'));


      // Oder aus einer Image Resource
      ob_start();
      imagejpg($im);
      $daten mysql_real_escape_string(ob_get_contents());
      ob_end_clean();

      // dann 
      mysql_query("INSERT INTO bin_data (data) VALUES ('$daten')");


      //---- PART 2  Ausliefern:
      // erst Header setzen, query dann
      $echo $row['data'];
      exit; 
      *ungetestet und stark vereinfacht*
      Wir werden alle sterben

      Kommentar


      • #4
        Also erstmal ein großes Danke für die Anworten.
        Es funktioniert jetzt wie es soll...

        $img = imagecreatefromjpeg('mysql_test.jpg');

        ob_start();

        imagejpeg($img);

        $data = mysql_real_escape_string(ob_get_contents());

        ob_end_clean();

        mysql_query("INSERT INTO bin_data (data) VALUES ('$data')");

        Aber was komisches ist mir da aufgefallen:

        Wenn ich jetzt im selben Skript folgendes einfüge:

        $id = mysql_insert_id();
        $arr = mysql_fetch_assoc(mysql_query("SELECT data FROM bin_data WHERE id = $id"));

        header('Content-Type: image/jpeg');
        echo $arr['data'];

        wird der Datensatz 2 mal angelegt ???

        Das ist jetzt nicht weiter tragisch,
        aber wundert mich, weil ich mir nicht erklären kann warum.

        Kommentar


        • #5
          Dann wird auch der INSERT 2 mal gemacht!!
          Also wird dein Script doppelt aufgerufen, zumindest Teile davon...
          Bei MySQL gibts keine wundersamme Datenvermehrung
          Wir werden alle sterben

          Kommentar


          • #6
            okay.

            Ich seh zwar nicht warum das passiert...
            Könnte es wegem dem header sein,
            der mit gesendet wird ?

            Auf jeden nochmals danke für die Hilfe.

            MfG

            Kommentar

            Lädt...
            X