Hi, On Fri, Apr 14, 2006 at 02:56:55PM +0200, Michal Nowikowski wrote: > Hello, > > I'm a Zope3 newbie. I want to send to user a file while he clicks on a link. > The file is created dynamically and sent to user for example in ZIP format. > I think I had to use IFile interface and File class. But I dont know how to > prepare it and send it to user. My code: > > class ISomeContainer(IReadContainer): > contains(IFile) > > then I have: > > self['zip'] = File("some data", "application/zip") > > So when I access url: http://somepath/zip > browser shows 'some data', but I want to see 'Save As' dialog window. > How to do that?
You won't need the IFile interface - just a simple view that sets some special HTTP-headers. Example: class DownloadView(BrowserView): def __call__(self): rsp=self.request.response rsp.setHeader('Content-disposition','attachment; filename=download.txt') rsp.setHeader('Content-Type','text/plain') return "This is a textfile" The type of data you return, the default filename the user gets presentend in his download dialog ('download.txt' in the example) and the data itself is 100% under your control. There should be no problem creating some kind of archive inside the view and return in to the user. Remember: You must always return a plain "str"ing from __call__ if you want to manually set the 'Content-Type' -header. Regards, Frank _______________________________________________ Zope3-users mailing list Zope3email@example.com http://mail.zope.org/mailman/listinfo/zope3-users