Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Anzeigen eines Bildes, das in einem MySQL-Blob gespeichert ist

Nun ... die Antwort darauf, warum es das tut, was Sie beschrieben haben, liegt an Ihrer Verwendung der header () -Funktion. In PHP können Sie vor einem Header-Aufruf nichts drucken, da dies den Webserver anweist, einen Content-Header vorzubereiten. Normalerweise ersetzen diese alle Inhalte vollständig.

Zweitens möchte ich erwähnen, dass das Speichern von Bildern in einer Datenbank aus zwei Gründen normalerweise keine gute Idee ist.

  1. Es hat erhebliche Auswirkungen auf die Leistung und das Rendering.
  2. Sie müssen Code schreiben, um die Blob-Daten zu rendern, anstatt nur das Bild selbst anzuzeigen.

Die bevorzugte Methode für eine datenbankgesteuerte Bildpräsentation wäre, dass Sie die Bilder in einem Verzeichnis und ihre Dateinamen in der Datenbank speichern würden. Wenn Sie nun die Bilder anzeigen möchten, müssen Sie lediglich die DB nach den Dateinamen abfragen, die Sie anzeigen möchten, und dann einfach den Dateinamen in ein HTML-Attribut einfügen.

Die Ausführung ist auch viel schneller.

Außerdem möchte ich darauf hinweisen, dass, wenn Sie möchten, dass ein Skript Ihr Rendering tatsächlich durchführt, Sie möchten, dass dieses Skript Ihren Header definiert und dann den Bild-Blob ausgibt oder druckt, nachdem Sie den Header definiert haben.

Bitte beachten Sie, dass Sie bei der Erstellung Ihres HTML-Tags ... das im src-Attribut dann eher so gestalten würden:

<img src="image.php?id=<some_number>">

Jetzt spuckt Ihre image.php-Datei die Bilddaten in das Tag aus.