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

Tres Seaver tseaver at palladion.com
Wed Jan 4 22:12:43 EST 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

John Toews wrote:
> 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!

A couple of thoughts:

 - Be sure you open the file in binary mode ('wb' rather than 'w');
   this won't help unless you are running Zope on Windows, however,
   because Windows is the only platform where the C runtime will mangle
   the line endings for files it thinks are "text", rather than
   "binary".

 - You could use a StringIO instance, rather than a tempfile;  YMMV.


Tres.
- --
===================================================================
Tres Seaver          +1 202-558-7113          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDvI6r+gerLs4ltQ4RAvrMAJ9oH0gtorWuW6NeowfVCfZ6PbyYSgCfbCHd
8VhNtnUrBeEiIp8sSLSVQOg=
=f+qw
-----END PGP SIGNATURE-----



More information about the Zope mailing list