Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno PHP + postgreSQL

Mám uložený obrázek v PostgreSQL a chci si jej za pomocí PHP zobrazit do webové stránky.
Bohužel to nějak nefunguje:


 $db = OpenDB();
            $query = "select obrazek_velky from eshop_zbozi where id=1";
            $result = pg_query($db,$query);
          $data = pg_fetch_row($result);
              header("Content-Type: image/jpeg");
              echo $data[0];
                     

            pg_free_result($result);
            pg_close($db);

Pokud odmažu řádek: header("Content-Type: image/jpeg"); , tak se zobrazí (textově) obrázek, ale když to tam nechám, tak se zobrazí jen název souboru se skriptem.

Čerpal jsem odsud: http://www.linuxsoft.cz/article.php?id_article=420

Taky by mě zajímalo jak obrázek do DB uložit (tam jsem se ještě nedostal).

Předem díky za přehršel inspirativních odpovědí.

Předmět Autor Datum
do DB ulozis len cestu k obrazku. Najlepsie nejaku relativnu.
wam_Spider007 12.10.2009 17:24
wam_Spider007
toto je uplny kod toho scriptu alebo mas nieco pred nim? funkcia header() musi byt zavolana pred pr…
emem 13.10.2009 12:52
emem
Vyriešné cez ICQ. Problém bol v tom, že PostgreSQL nevráti priamo vložené dáta, ale je potrebné ešte… poslední
los 13.10.2009 14:06
los

toto je uplny kod toho scriptu alebo mas nieco pred nim?

funkcia header() musi byt zavolana pred prvym outputom poslanym na klienta,
takze ak tam mas nejake html tagy alebo echo pred volanim tej funkcie,
tak to fungovat nebude.

Vyriešné cez ICQ. Problém bol v tom, že PostgreSQL nevráti priamo vložené dáta, ale je potrebné ešte použiť funkciu pg_unescape_bytea:

When you SELECT a bytea type, PostgreSQL returns octal byte values prefixed with '\' (e.g. \032). Users are supposed to convert back to binary format manually.

Pri vkladaní obrázku do databázy je potom potrebné použiť pg_escape_bytea (v dokumentácii k tejto funkcii je aj konkrétny príklad).

Zpět do poradny Odpovědět na původní otázku Nahoru