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):
                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.


Zope3-users mailing list

Reply via email to