Would it make more sense to let the web server do the zipping? If you are simply trying to reduce the amount of bandwidth being used, rather than really wanting to store the file zipped up on the server, this would simply be a matter of configurations, for example see:
for HTTP/1.1 GZIP compression. The server can force the response to the client to be zipped.
The client will receive zipped packets and handle the unzipping. It should be possible to stream the file too, so the client doesn't need all the file before it can do something useful, because the server can zip individual chunks.
I agree with @Ant's basic point--if you've got a single file, use straight compression rather than a zip archive. The file can be compressed or not on the server, as you like.
you have not got the problem here. If you zip the file, then to unzip at the other end, you need the entire zip file. So you can't make any use of the data inside the zip if its partially there on the client. So basically even though the zip file itself is getting streamed, the audio itself is not. I believe the solution is to use low-bit rate or better streaming formats
@Suraj if the individual chunks are zipped, then no, you dont have the problem. but its true that you need to check what happens if you used Transfer-Encoding chunked together with GZIP compression. potentially, you need to use just chunked transfer encoding, and zip the chunks yourself and unzip them on the client, which is messy! i dont really know exactly how it works without trying it, but i assume individual chunks will be gzipped. if anyone tries it, let me know!
en.wikipedia.org/wiki/Gzip - seems to suggest gzip uses a stream, ie you dont need the entire thing to start unzipping... so i imagine it works. try it and see :-)