Jürgen: BLOB aus Oracle XE mit PHP anzeigen

Hallo,

habe Bilder als BLOB in meiner Oracle XE hinterlegt und möchte die nun im Webbrowser anzeigen lassen. Leider will mir das aber nicht gelingen. Als Ausgabe bekomme ich nur "http:\localhost\bloblesen.php (bloblesen.php ist der dateiname dieser datei hier). hier der quellcode von bloblesen.php :

<?php

require("./config.php"); // dort stehen die Verbindungdaten drin

$con = oci_connect($user, $password, $database);

$query = "select foto from personen where personenid = 70";
   $result = oci_parse($con, $query);

OCIBindByName($result, "foto", $foto);

header("Content-Type: image/jpg");

echo ($foto);
?>

Das Foto ist eine jpg-Datei. Was mache ich falsch?? Würde mich über Hilfe sehr freuen!

  1. hi,

    habe Bilder als BLOB in meiner Oracle XE hinterlegt und möchte die nun im Webbrowser anzeigen lassen. Leider will mir das aber nicht gelingen.

    Hatten wir erst neulich: http://forum.de.selfhtml.org/archiv/2007/1/t144959/

    dedlfix empfiehlt dort eine bestimmte Methode, um BLOBs aus einer Oracle-DB in "echo-fähige" PHP-Variablen zu bekommen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Danke, hab ich gelesen, nur leider werde ich da nicht recht schlau draus bzw. bringen die neuen Versuche keine neuen Ergebnisse. Hat das mal jemand geschafft ein Blob aus der XE rauszuladen? Wenn ja, wie?

      Kann doch eigentlich nicht so knifflig sein :(

      1. Also ich kann machen was ich will, es funktioniert einfach nicht mit dem Header. Das Foto ist definitiv in der Datenbank und wird definitiv auch aus der Abfrage zurückgegeben. Ich habe keinen blassen Schimmer warum es einfach nicht dargestellt wird. Der Code ist nun wie folgt:

        <?php

        require("./config.php");

        $con = oci_connect($user, $password, $database);
        $result=OCIParse($con, "select FOTO from fahrer where personenid = 70");

        $err2=OCIError($result);
        if($err2==TRUE){ echo " <font size=2>Oracle-Fehler: $err2[message]</font><br> ";}

        header("Content-type: image/jpeg");

        $foto->load();
        echo $foto;
        ?>

        Ausgabe ist "http://localhost/bloblesen.php (der Dateiname dieser Datei hier). Entferne ich den Header wird mir die Binärdatei ausgegeben (alos Zahlensalat). Im Browserfenster wird mir bloblesen.php (JPEG-Grafik) in der Statusleiste angezeigt.

        Hat das denn noch nie einer von euch geschafft ein Bild aus der DB anzuzeigen?? Oder wie habt ihr das gemacht? Das kann doch nicht so unglaublich kompliziert sein. Ich weiß nicht mehr was ich noch probieren kann.

        1. echo $begrüßung;

          Hat das denn noch nie einer von euch geschafft ein Bild aus der DB anzuzeigen?? Oder wie habt ihr das gemacht? Das kann doch nicht so unglaublich kompliziert sein. Ich weiß nicht mehr was ich noch probieren kann.

          Doch, das geht auch recht einfach. Zumindest unter MySQL. :-) Bei Oracle hatte ich noch nicht das Bedürfnis. Unter MySQL stelle man den Feldtyp auf einen der BLOB-Typen und maskiere die Binärdaten mit mysql_real_escape_string() oder verwende Prepared Statements. Das Auslese-Script sendet einen passenden Content-Type-Header und reicht die Daten aus dem Feld einfach dem Client durch.

          Für Oracle scheint mir der Schlüssel zum Erfolg im LOB-Objekt zu liegen. Wenn die Beispiele im Handbuch nicht reichen, täte es mich schwer wundern, wenn nicht irgendwo im großen weiten Netz eine Anleitung rumläge.

          echo "$verabschiedung $name";