All I really want to do is pass the name of an image to an external method which then extracts it from a directory, wraps it up in the content-type magic and sends it back to me. Does anyone have something like it working? Any pointers gratefully received.
Well, haven't got it working... haven't even tested it, but my guess would be attach the content-type header as plain-text to the front of your return value. The syntax of the content-type header should be in any CGI manual. I think that when you access an external method directly it acts very like CGI, in that the ZPublisher returns it without any preparatory wrapping. So I think you need to put the header in manually. Good luck.
Thanks for the thoughts. I've got something very similar to that, in that at the top level of the Zope tree, I have an external method called 'img'. The code is here; def img(self, src, RESPONSE): import os img_dir = '/home/zope/Zope-1.11.0pr1-src/Images' typemap={'.gif' : 'image/gif', '.jpg' : 'image/jpeg'} img_name=os.path.join(img_dir, src) # Determine the ad type # img_type=self.image_type(img_name) img_ext = img_name[-4:] img_type = typemap[img_ext] # Open ad file, using 'rb' to open it in binary mode! img_file=open(img_name, 'rb') img_data=img_file.read() img_file.close() # Set the content-type of the response RESPONSE.setHeader('content-type', img_type) return img_data The Images directory has a file in it called s1cb.gif If I access the image so http://server/img?src=s1cb.gif I get an image on the browser. If I use the following DTML, <!--#var "img(src='s1cb.gif')"--> I get a TypeError. I also get it with <!--#var "img('s1cb.gif')"--> It gets weirder though... If I use <!--#var "img('s1cb_p0000001.gif', RESPONSE)"--> however, I get a document downloaded to the desktop that has rendered HTML *and* what looks like binary data (it's certainly got GIF89A embedded in it) where the DTML was placed. Ok, so what am I doing wrong? (answers on a postcard please) TIA tone ------ Dr Tony McDonald, FMCC, Networked Learning Environments Project The Medical School, Newcastle University Tel: +44 191 222 5888 Fingerprint: 3450 876D FA41 B926 D3DD F8C3 F2D0 C3B9 8B38 18A2