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