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 )