in reply to Re: Creating Zip Archives on the fly
in thread Creating Zip Archives on the fly

THIS, is exactly what I was looking for! Thank you. I might be able to "let go" of the renaming (not as critical as the streaming for our application). Nevertheless, I may eventually be interested in the next release of IO::Compress::Zip. Thanks again. Also, I agree about having the zip file already available... I considered that, but it's a pretty dynamic environment, so the best option will really be to build them on the fly.

Replies are listed 'Best First'.
Re^3: Creating Zip Archives on the fly
by pmqs (Friar) on Oct 29, 2011 at 12:23 UTC

    Just a quick followup on this thread. The latest version of IO::Compress::Zip now has the ability to rename zip members on the fly using the FilterName option.

    Here is the proof-of-concept from before updated to include FilterName

    use IO::Compress::Zip qw(:all) ; select STDOUT; $| = 1; my $OUT = \*STDOUT; print <<EOM; Status: 200 OK Content-Type: application/zip Transfer-Encoding: chunked EOM my @files = qw(/tmp/file1 /tmp/file2) ; zip [@files] => '-', FilterName => sub { if ($DLWOSC eq "checked"){ $_=(split('/',$_))[-1]; s/\;/\_/g; } }, FilterEnvelope => sub { # Chunk the output my $length = length($_); $_ = sprintf("%x", $length) . "\r\n" . $_ . "\r\n"; $_ .= "\r\n" unless $length; 1; } ;