Ankündigung

Einklappen
Keine Ankündigung bisher.

Speichern einer Bilddatei in einer MySQL-Tabelle

Einklappen

Neue Werbung 2019

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

  • Speichern einer Bilddatei in einer MySQL-Tabelle

    Hallo,

    ich bin auf folgendes Problem gestoßen und finde nicht die Lösung.

    In einer Datenbank-Tabelle befindet sich eine Spalte mit dem Datentyp Blob. Dort habe ich zum Beispiel kleine Bilder (Logos) gespeichert. Diese können die Bildformate jpg, gif usw. enthalten.

    Nun zu meinem Problem:
    Ich habe eine Klasse für die Sicherung von Datenbanktabellen entwickelt, die alle Tabellen ausliest und anschließend ein SQLDump erstellt. Solange ich keine Tabellen mit binären Blob-Feldern auslese, ist das einlesen des Dump in eine MySQL-Datenbank kein Problem.
    Enthält mein SQL-Dump Tabellen jedoch Blob-Felder (Bildinhalten), bekomme ich zum Beispiel folgenden Inhalt für eine solche Spalte:

    Code:
    GIF89a6 2 ÷å©A4ÀÇqdÒd...........
    Das einlesen mit solchen Werten mittels meines SQLDump schlägt dann an dieser Stelle fehl.

    Ich habe mir dann mal angschaut, wie ein solcher Inhalt beim Erstellen eines SQLDump in PHPMyAdmin aussieht:

    Code:
    0x47494638396134002700f70000000000.......
    Ich vermute mal, das hier die binären Daten mit Hilfe von pack() in einen anderen binären String umgewandelt wird. Einige Versuche meinerseits damit schlugen leider fehl.


    Ist die Funktion pack() wirklich die richtige Funktion? Wenn ja, welchen ersten Parameter muß ich übergeben? Wie sähe der Aufruf dieser Funktion aus, wenn mein Blob-Feld sich in einem Array befindet?

    Danke für eure Hilfe.

    Gruß Merlin der Zauberer
    www.Sternenwelt.net - Astronomie im Internet -
    www.SternenweltForum.net - Antworten rund um die Astronomie -


  • #2
    Also über eine PHP-Funktion kann man sich doch super selber informieren!
    php.net: pack()
    Abgesehen davon, dass es unnötig ist Bilder (seien sie noch so klein) in einer Datenbank zu speichern, sollte es mit dieser Methode Möglich sein.
    Ich habe aber nur mal kurz drüber geguckt, da ich wie gesagt kein Freund von Bildern in Datenbanken bin.
    Gibt es einen bestimmten Grund Bilder in der Datenbank zu speichern? Theoretisch dürfte der Aufruf eines Bildes doch viel länger dauern als per <img> oder?

    EDIT:
    Direkt das erste Beispiel bietet die gewünschte Funktionalität an
    "Nobody is as smart as everybody" - Kevin Kelly
    — The best things in life aren't things

    Kommentar


    • #3
      http://www.php-faq.de/q/q-db-blob.html

      Kommentar


      • #4
        Hallo,

        erst mal danke an euch beiden für die Antworten.

        Zitat von phpdummi
        Also über eine PHP-Funktion kann man sich doch super selber informieren!
        php.net: pack()
        Habe ich benutzt. Bin aber nun mal leider nicht zu meinen gewünschten Ergebnis gekommen.

        Zitat von phpdummi
        Abgesehen davon, dass es unnötig ist Bilder (seien sie noch so klein) in einer Datenbank zu speichern, sollte es mit dieser Methode Möglich sein.
        Ich habe aber nur mal kurz drüber geguckt, da ich wie gesagt kein Freund von Bildern in Datenbanken bin.
        Gibt es einen bestimmten Grund Bilder in der Datenbank zu speichern?
        Ich weiss. In diesem Fall habe ich für mich dazu entschlossen, diese Logos zu speichern. Bei dieser Tabelle handelt es sich um eine Referenz mit dem Namen von TV-Sendern und halt dem Senderlogo (max. 3 KB).

        Zitat von phpdummi
        EDIT:
        Direkt das erste Beispiel bietet die gewünschte Funktionalität an
        Auch das Beispiel habe ich gesehen. Aber was bringt mir das, wenn mein Ergebnis nicht stimmt? Deswegen habe ich angefragt, ob jemand Hilfestellung geben kann

        Nach nunmehr 3 Stunden habe ich eine Lösung gefunden. Und zwar benutze ich in meiner Klasse die Funktion bin2hex
        http://de2.php.net/manual/de/function.bin2hex.php Diese Funktion erfüllt genau meinen Zweck.
        Jedoch muss man vor den "transformierten String" die beiden Zeichen 0x ohne Lerrzeichen setzen.

        Da es hierbei auf den Datentyp in der Tabelle ankommt, sollte man zum auslesen dieser den MySQL-Befehl DESCRIBE http://dev.mysql.com/doc/refman/5.1/de/describe.html verwenden. Hier sind die Angaben des Datentyp wesentlicher genauer.

        Schöne Nacht noch

        Merlin der Zauberer
        www.Sternenwelt.net - Astronomie im Internet -
        www.SternenweltForum.net - Antworten rund um die Astronomie -

        Kommentar


        • #5
          Im ersten Beispiel wurde unter anderem auch bin2hex verwendet

          Aber schön das dein Problem gelöst ist!
          "Nobody is as smart as everybody" - Kevin Kelly
          — The best things in life aren't things

          Kommentar


          • #6
            Hallo PHPDummi,

            Zitat von phpdummi
            Im ersten Beispiel wurde unter anderem auch bin2hex verwendet
            Ich habe die heruntergeladene Dokumentation von PHP benutzt. Da sind die Userbeispiele scheinbar nicht drin (oder meine zu alt!)

            Merlin der Zauberer
            www.Sternenwelt.net - Astronomie im Internet -
            www.SternenweltForum.net - Antworten rund um die Astronomie -

            Kommentar


            • #7
              Nimm die englische Extended-CHM (oder sowas), da sind sie mit drin. Zumal die deutsche teilweise sowieso fehlerhaft is ...
              Nicht jeder Fehler ist ein Bug.

              Kommentar

              Lädt...
              X