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 )


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 )


[Zope] dynamically creating zip file, returning to user

2006-01-04 Thread John Toews
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 )