####
#!/usr/bin/perl
use CGI;
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
my $q = new CGI;
my $save_dir = "/home/user/www/upload_dir";
my $file = $q->param("file");
open(OUTFILE, ">$save_dir/file.zip") || die "can't create file: $!";
while (read($file, $buffer, 1024)) { print OUTFILE $buffer; }
close(OUTFILE);
chmod (0666, "$save_dir/file.zip");
my $file_patch = $save_dir . "/file.zip";
my $zip = Archive::Zip->new($file_patch);
my @files = $zip->members();
foreach (@files) {
my $unzip_file = $_->fileName;
$zip->extractMember($unzip_file);
if ($zip->extractMember($unzip_file) != 0) {
die print "Extraction of $file failed: $!";
}
}