Re: [Zope] dynamically creating zip file, returning to user
John Toews schrieb: > Thanks Tino, I'll definately give that a try too. The quick fix seemed > to be opening the file for read in binary mode... that should have been > obvious. Posting another dumb question to the list now. ;) no, dot use a regular file! Use the tempfile module! And dont reopen but seek to the start - f.seek(0) You just open it for "rw". ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
Re: [Zope] dynamically creating zip file, returning to user
John Toews schrieb: > Zope 2.8.0, Python 2.3.5 > > I'm having a heck of a time figuring out how to zip up some files in my > zope instance and return them to the user. I can sucessfully create a > zip file on the local file system, but if I try to pass it back to the > user it is corrupted. Of course I'd rather not create this tmp3.zip > file, so if there's a way around that (which I'm sure there is!) please > do let me know. > > filename = 'test.zip' > response = self.REQUEST.RESPONSE > response.setHeader('Content-Type','application/zip') > response.setHeader('Content-Disposition','attachment; > filename=%s' % filename) > # tried zf = zipfile.ZipFile( response, 'w' ) but get error, > ZHTTP object doesn't have tell method > zf = zipfile.ZipFile( '/tmp3.zip', 'w' ) > zf.writestr( 'testfilename', str( self._getOb( testfileid ) ) ) > zf.close() > f = open('/tmp3.zip') > return f.read() > Try with zipefile.ZipFile(response,"a"), this should avoid the use of tell (untestet) otoh, If you'd use the tempfile module and dont return f.read() but use FileStreamIterator with it, you even have a win performance-wise. HTH Tino ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
[Zope] dynamically creating zip file, returning to user
Zope 2.8.0, Python 2.3.5 I'm having a heck of a time figuring out how to zip up some files in my zope instance and return them to the user. I can sucessfully create a zip file on the local file system, but if I try to pass it back to the user it is corrupted. Of course I'd rather not create this tmp3.zip file, so if there's a way around that (which I'm sure there is!) please do let me know. filename = 'test.zip' response = self.REQUEST.RESPONSE response.setHeader('Content-Type','application/zip') response.setHeader('Content-Disposition','attachment; filename=%s' % filename) # tried zf = zipfile.ZipFile( response, 'w' ) but get error, ZHTTP object doesn't have tell method zf = zipfile.ZipFile( '/tmp3.zip', 'w' ) zf.writestr( 'testfilename', str( self._getOb( testfileid ) ) ) zf.close() f = open('/tmp3.zip') return f.read() Any thoughts on what fairly obvious thing I'm doing wrong? Thanks! John ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )