Re: [Zope] dynamically creating zip file, returning to user

2006-01-05 Thread Tino Wildenhain
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 )


Re: [Zope] dynamically creating zip file, returning to user

2006-01-05 Thread Tino Wildenhain
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 )