PHP-Anzeigebild BLOB von MySQL [duplicate]

Lesezeit: 3 Minuten

PHP Anzeigebild BLOB von MySQL duplicate
Benutzer2732663

Ich versuche, ein Bild anzuzeigen, das in der BLOB-Spalte in der Datenbank gespeichert ist.

Ich hole die Daten aus der Datenbank mit einem SELECT, führe keine Transformationen an den Daten durch und zeige sie mit folgendem an (aus einem Skript, dessen einzige Ausgabe die folgende ist):

header("Content-Type: image/jpeg");
echo $image;

Bitte beachten Sie, dass Chrome die Inhaltsgröße als die richtige Größe für das Bild sowie den richtigen MIME-Typ anzeigt (image/jpeg). Vor dem Header wird nichts ausgegeben und ich habe überprüft, ob der Blob in der Datenbank korrekt ist. Es gibt auch keine abschließenden Leerzeichen vor oder nach dem <?php ?> Stichworte.

Chrome/IE zeigt ein Bildsymbol an, aber nicht das Bild selbst. irgendwelche Ideen?

EDIT: Bild wird so aus der Datenbank geholt:

$sql = "SELECT * FROM products WHERE id = $id";
$sth = $db->query($sql);
$row = $sth->fetch();
$image = $row['image'];

var_dump($image) ergibt:

string 'ÿØÿà�JFIF��x�x��ÿá�ZExif��MM�*�����������J��������Q�������Q������tQ������t�����† ��±ÿÛ�C�       

ÿÛ�CÿÀ�_"�ÿÄ����������� 
ÿÄ�µ���}�!1AQa"q2‘¡#B±ÁRÑð$3br‚ 
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³    ´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ��������'... (length=60766)

  • Poste was ausmacht $image Bitte (d. h. Anfragen usw.)

    – Machatität

    13. Dezember 2013 um 0:08 Uhr

  • @ user2732663 Hast du meine Antwort unten versucht?

    – Arian Faurtosh

    13. Dezember 2013 um 0:19 Uhr

  • versuchen zu speichern $image in die Binärdatei und öffnen Sie sie, vielleicht sind die Daten in der DB beschädigt?

    – Ilja Bursov

    13. Dezember 2013 um 0:26 Uhr

  • Haben Sie versucht, den Quellcode im Browser anzuzeigen? Manchmal bringt ein PHP-Fehler oder -Hinweis die Ausgabe durcheinander.

    – Gerhard Schneider

    13. Dezember 2013 um 11:09 Uhr

  • Sie haben uns nicht den Code gezeigt, der das Bild einfügt – was genauso wichtig ist wie der Code zum Abrufen.

    – Symbohne

    13. Dezember 2013 um 11:40 Uhr

Versuchen Sie es so.

Zum Einfügen in DB

$db = new mysqli("localhost", "root", "", "DbName");
$image = file_get_contents($_FILES['images']['tmp_name']);
$query = "INSERT INTO products (image) VALUES(?)";
$stmt = $db->prepare($query);
$stmt->bind_param('s', $image);
$stmt->execute();

Für den Zugriff auf das Bild von Blob

$db = new mysqli("localhost", "root", "", "DbName");
$sql = "SELECT * FROM products WHERE id = ?";
$stmt = $db->prepare($sql);
$stmt->bind_param('s', $id);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_array();
echo '<img src="data:image/jpeg;base64,'.base64_encode($row['image']).'"/>';

  • Ich möchte dieses Echo im HTML-Iframe anzeigen. wie kann das gemacht werden?

    – Sarah_Salar

    29. November 2019 um 5:24 Uhr

  • Hallo! Ich weiß das wirklich zu schätzen, aber was passiert, wenn das Bild ein anderes Format hat?

    – Carlos Montiel

    26. September 2020 um 6:37 Uhr

  • @CarlosMontiel, das Speichern von Bildern in db ist keine gute Praxis. Bild im Verzeichnis speichern und den Bildnamen oder -pfad in der Datenbank speichern, um auf dieses Bild zuzugreifen. Jemand stellt die Frage, ich gebe die Antwort. das ist es. 🙂

    – Muhammad Rizwan Kaim Khani

    14. November 2020 um 11:05 Uhr

  • @CarlosMontiel, ich bin mir nicht sicher, aber es muss auch an anderen Formaten wie PNG oder GIF usw. gearbeitet werden.

    – Muhammad Rizwan Kaim Khani

    14. November 2020 um 11:06 Uhr

Dies ist, was ich verwende, um Bilder von Blob anzuzeigen:

echo '<img src="data:image/jpeg;base64,'.base64_encode($image->load())%20.'" />';

  • ist $image ein PHP-Objekt?

    – Kebab-Programmierer

    29. November 2015 um 18:53 Uhr

  • Arbeiten wie Charme! Danke. @ProgrammingNewb Sie können Ihren Bilddatentyp in $image platzieren. es könnte eine PHP-Variable von $row sein[“photo”];

    – Moxet Khan

    24. Mai 2016 um 6:08 Uhr

  • Schön zu wissen, dass es für Sie funktioniert hat, ich habe einen anderen Ansatz gewählt, ich habe einen Ordner auf meinem Server erstellt und alle Bilder dort gespeichert, und ich speichere den Link des Bildes in meiner MySQL-Datenbank, und wann immer ich ein Bild anzeigen möchte, rufen Sie an der Link in meiner Datenbank gespeichert

    – Kebab-Programmierer

    25. Mai 2016 um 13:18 Uhr

989460cookie-checkPHP-Anzeigebild BLOB von MySQL [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy