[Zope] returning a dynamically created zip file
John Hunter
jdhunter at ace.bsd.uchicago.edu
Tue Jun 29 15:14:21 EDT 2004
I have a class in a zope file that returns a zip file. The zip file
is created dynamically. Currently, I save this zip file to a zope
folder and return it's URL. I was wondering if there was a way to
avoid saving it to the zope file system.
Here is what I have
def all_zipped(self, REQUEST=None, *args, **kwargs):
"""
Get all the documents from the doc template folder as a zip
"""
docFolder = self.get_docfolder()
tmpfile = TemporaryFile() # stringio bombed
zip = zipfile.ZipFile(tmpfile, 'w')
#snip write the zip file
zip.close()
id = 'docs.zip'
if id in docFolder.objectIds():
docFolder._delObject(id)
tmpfile.seek(0)
docFolder._setObject(id, File(id, id, tmpfile.read(), 'application/zip', precondition=''))
fileo = docFolder._getOb(id)
REQUEST.RESPONSE.redirect(fileo.absolute_url())
I tried
tmpfile.seek(0)
return File(id, id, tmpfile.read(), 'application/zip', precondition='')
and this did launch the file save dialog in my browser, but the
content type wasn't set correctly. What is the best way to do this?
Also, I feel like I must be doing something wrong calling all these
leading underscore methods of my folders (_delObject, _setObect,
_getObject). What is the preferred way to make these calls?
Thanks,
John Hunter
More information about the Zope
mailing list