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

Trevor Toenjes zope@toenjes.com
Mon, 11 Mar 2002 12:39:10 -0500


AHH. Another clever workaround.
I will play with this idea.
This could be better than the "redirect solution", because it calls the
image directly.
AND I can see other uses for traverse_subpath[0], now that I see it in
action.
Thanks.
-Trevor

But I still have yet to find out if it is possible to manipulate the
setHeader info in DTML/p-script.

BTW, for the the thread-    context.dosomething(contect, container.REQUEST)
allows the DTML method to grab the QUERY_STRING, etc.


> -----Original Message-----
> From: Phil Harris [mailto:phil@harris-family.info]
> Sent: Monday, March 11, 2002 9:56 AM
> To: Trevor Toenjes; zope@zope.org
> Subject: Re: [Zope] Using RESPONSE.setHeader to have a Method act like
> an Image
>
>
> 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 )
>