[Zope] image from database field
Martijn Pieters
mj@antraciet.nl
Mon, 13 Sep 1999 09:55:20 +0200
At 09:18 13/09/99 , Coi Giovanni wrote:
>Hi,
>
>we want to build dynamic pages from a database (in our test lab is MS-
>Access via ODBC) table with a BINARY field (say imgfld) filled with image
>in raw (binary not OLE!) (JPEG/GIF, ecc) and other fields. (As for example
>may be an "employees card list" where we need to show peoples portrait
>and a table row describe all the information for a person included his/her
>photo.)
>
>The code we try was (suppose getTable1 as method to list all fileds in
>table)
>
>'listCards':
>
>....
><!--#in getTable1 -->
> Name: <!--#var nameFld-->
> Address: <!--#var addressFld-->
> ....
> <img src="<!--#var imgFld -->">
>....
><!--#/in>
>....
>
>but this is wrong because the 'src' attribute of the 'img' HTML tag want
>the addres of the image not the image directly!
>So we have the right image (the object imgFld) but we can't use it!
>
>We need a way to get the "HTTP address" of the image object (that named
>'imgFld' in this name space) in current tuple returned from getTable1
>method when rendering the DTML tags in 'listCards'.
You want a separate method that will only return the imgFld data, and sets
the Content-Type of the data returned:
<!--#call "RESPONSE.setHeader('Content-Type', 'image/gif')"-->
<!--#in getTable1--><!--#var imgFld--><!--#/in-->
Note that you may have to put things on one line to avoid extraneous
whitespace (you can put breaks within DTML tags). Also note, that I haven't
done this myself, and you might run into limits of the DA (like, not
supporting BINAIRY fields). And, I assume your image data is always a GIF.
If it is something else, adjust the Content-Type accordingly. You may have
to pull this from the DB and set it dynamically.
Then call have the browser call this method from the SRC attribute of the
IMG tag:
<!--#in getTable1 -->
Name: <!--#var nameFld-->
Address: <!--#var addressFld-->
....
<img src="fromDBImg?id=<!--#var id-->">
....
<!--#/in>
where "id=<!--#var id-->" is the information that getTable1 needs to pull
the proper image from the database.
--
Martijn Pieters, Web Developer
| Antraciet http://www.antraciet.nl
| Tel: +31-35-7502100 Fax: +31-35-7502111
| mailto:mj@antraciet.nl http://www.antraciet.nl/~mj
| PGP: http://wwwkeys.nl.pgp.net:11371/pks/lookup?op=get&search=0xA8A32149
------------------------------------------