####
sub upload {
read (STDIN, $in, $ENV{'CONTENT_LENGTH'});
@pairs = split (/&/, $in);
foreach $pair (@pairs) {
($name, $value) = split (/=/, $pair);
$name =~ s/\+/ /g;
$name =~ s/%(..)/pack("C", hex($1))/ge;
$value =~ s/\+/ /g;
$value =~ s/%(..)/pack("C", hex($1))/ge;
$value =~s///g;
if ($parse{$name}) {
$parse{$name} .= ", $value";
} else {
$parse{$name} = $value;
}
}
my $cgi = CGI->new;
my $upload = CGI::Upload->new( $cgi );
if ( $upload->mime_type('upload') eq 'image/gif' ) {
my $buffer;
my @results;
my $fh = $upload->file_handle('upload');
while (read($fh, $buffer, 45)) {
push (@results, pack("u", $buffer));
}
open (FILE, "+>>$parse{directory}/$upload->file_name('upload')") or die "Can't open image file: $!";
for $line (@results) {
print FILE "$line";
}
close (FILE) or die "Can't close image file: $!";
$fh->close;
}
filemgr($parse{directory}); # Print directory tree
}