Обсуждение: How do I display an image?
Fairly new to PHP. How do I display an image I have stored in my db? I
found code on phpbuilder.com, but I must be doing something wrong. If I
just print out the field, it prints the machine code immediately. But I
alas my users want an image instead of machine language.
CREATE TABLE mdc_imageref (
keyp_imageref int4,
modid int8,
img bytea,
keyf_image int4
)
$id = $_GET["id"];
if($id) {
$db = db_connect();
$result = pg_query($db,"Select ir.img,p.keyp_products
from mdc_products p join mdc_product_images pi on
p.keyp_products = pi.keyf_product
join mdc_attributes a on a.keyp_attribute =
pi.keyf_attribute
join mdc_images i on i.keyp_images = pi.keyf_image
join mdc_imageref ir on ir.keyf_image = i.keyp_images
where p.keyp_products = $id and keyp_attribute = 7");
$row = pg_fetch_array($result);
$type = "JPG";
Header( "Content-type:$type");
echo $row[0];
}
TIA
Patrick Hatcher
Macys.Com
Legacy Integration Developer
Hi Patrick Before storing the binary data in the BYTEA-Field use pg_escape_bytea($imagedata) After retrieving the imagedata from the table you must remove the slashes the above function added. Use stripCslashes(). $image = stripcslashes($imagedata); This works for me;-) pg_escape_bytea() is available since php 4.2.0. regards Conni
that did it! Thank you very much
Patrick Hatcher
Macys.Com
Legacy Integration Developer
"Cornelia Boenigk"
<poppcorn@cornelia-b To: "PGSQL+PHP" <pgsql-php@postgresql.org>, "Patrick Hatcher"
oenigk.de> <PHatcher@macys.com>
cc:
10/23/2002 05:36 PM Subject: Re: [PHP] How do I display an image?
Please respond to
"Cornelia Boenigk"
Hi Patrick
Before storing the binary data in the BYTEA-Field use
pg_escape_bytea($imagedata)
After retrieving the imagedata from the table you must remove the slashes
the above function added. Use stripCslashes().
$image = stripcslashes($imagedata);
This works for me;-)
pg_escape_bytea() is available since php 4.2.0.
regards
Conni
Patrick Hatcher schrieb:
> $row = pg_fetch_array($result);
> $type = "JPG";
> Header( "Content-type:$type");
> echo $row[0];
For most browsers that's enough, at least some versions of
InternetExplorer need more information:
$data = $db->bytea_decode($db->f("data"));
header(sprintf("Content-type: %s", $db->f("type")));
header(sprintf("Content-Disposition: attachment; filename=%s",
$db->f("name")));
header(sprintf("Content-length: %s", strlen($data)));
print($data);