[Zope] Using RESPONSE.setHeader to have a Method act like an Image

Phil Harris phil@harris-family.info
Mon, 11 Mar 2002 14:55:42 -0000


do it in a Python script:

## Script (Python) "getImg"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=
##title=
##
req = container.REQUEST
res =  req.RESPONSE

imgname=traverse_subpath[0]
res.setHeader('Content-type', 'image/jpeg')
therealimage=context[imgname]
context.dosomething()

return therealimage.data


Tested, by creating a dummy dosomething.

You basically need to use it like this:

http://localhosy:8080/getImg/tick.gif

where tick.gif is the image you want served, this gets put into the
traverse_subpath as entry 0, which is then used to get the realimage.

ps.  This can be called from anywhere, it's just a url ;)


hth

Phil

----- Original Message -----
From: "Trevor Toenjes" <zope@toenjes.com>
To: <zope@zope.org>
Sent: Monday, March 11, 2002 2:31 PM
Subject: [Zope] Using RESPONSE.setHeader to have a Method act like an Image


> More info...setting the header works until I add additional methods.
> ----
> |  <dtml-call "RESPONSE.setHeader('Content-type', 'image/jpeg')">
> |  <dtml-var expr="therealimage.data">
> ----
> ...works
>
>
> ----
> |  <dtml-call "RESPONSE.setHeader('Content-type', 'image/jpeg')">
> |  <dtml-var expr="therealimage.data">
> |
> |  <dtml-var dosomething>
> ----
> ...doesnt work properly.  Returns the wrong Content-Length.
>
> -Trevor
>
>
> > -----Original Message-----
> > From: zope-admin@zope.org [mailto:zope-admin@zope.org]On Behalf Of
> > Trevor Toenjes
> > Sent: Monday, March 11, 2002 7:50 AM
> > To: zope@zope.org
> > Subject: [Zope] How a method only returns the data of an image
> >
> >
> > I need to make a method act like the clone of an image.
> > Without extending the Image class...(I would like to do this in DTML or
> > python-script)
> > I am simply trying to get a method to return the exact data of an Image
> > object, so it can be used in normal HTML <IMG
> > src="myimage.jpg?somevariable">.  If the Image is a method, it can
execute
> > some logic based on the QUERY_STRING.
> >
> > example:  DTML_Method "myimage.jpg"
> > # should look and smell like a JPG to the browser (but also execute some
> > logic without
> > # effecting the image header data)
> > ----
> > |  <dtml-call "RESPONSE.setHeader('Content-type', 'image/jpeg')">
> > |  <dtml-var expr="therealimage.data">
> > |  <dtml-var somelogic>
> > ----
> > But this doesn't return the proper data or Content-Length:
> > "therealimage" is a standard Zope Image object.
> >
> > Any help is greatly appreciated...
> > -Trevor
> >
> >
> > _______________________________________________
> > Zope maillist  -  Zope@zope.org
> > http://lists.zope.org/mailman/listinfo/zope
> > **   No cross posts or HTML encoding!  **
> > (Related lists -
> >  http://lists.zope.org/mailman/listinfo/zope-announce
> >  http://lists.zope.org/mailman/listinfo/zope-dev )
> >
>
>
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists -
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )