use CGI; $max_num_files ||= 1; $Photo_Dir ||= $ENV{'DOCUMENT_ROOT'}; undef @bad_extensions if @good_extensions; for(my $a = 1; $a <= $max_num_files; $a++) { my $req = new CGI; if($req->param("FILE$a")) { my $file = $req->param("FILE$a"); my $filename = $file; $filename =~ s/^.*(\\|\/)//; $filename =~ s/ +/\_/g; #For IE $filename =~ s/ +/\_/g; #For Opera $filename =~ s/\"//g; my $proceed_type = 0; if(@good_extensions) { foreach(@good_extensions) { my $ext = $_; $ext =~ s/\.//g; if($filename =~ /\.$ext$/) { $proceed_type = 1; last; } } unless($proceed_type) { push(@was_not_good_type, $filename); } } elsif(@bad_extensions) { $proceed_type = 1; foreach(@bad_extensions) { my $ext = $_; $ext =~ s/\.//g; if($filename =~ /\.$ext$/) { $proceed_type = 0; last; } } unless($proceed_type) { push(@was_a_bad_type, $filename); } } else { $proceed_type = 1; } if(($auto_rename == 2) && (-e "$Photo_Dir/$filename")) { $proceed_type = 0; push(@rejected, $filename); } if($proceed_type) { if((-e "$Photo_Dir/$filename") && ($auto_rename == 1)) { my $pick_new_name = 1; my $fore_num = 1; $filename =~ /^(.+)\.([^\.]+)$/; my $front = $1; my $ext = $2; while($pick_new_name) { my $test_name = $front . $fore_num . '.' . $ext; unless(-e "$Photo_Dir/$test_name") { $pick_new_name = 0; $filename = $test_name; } $fore_num++; } } elsif((-e "$Photo_Dir/$filename") && ($auto_rename == 2)) { next; } if(open(OUTFILE, ">$Photo_Dir/$filename")) { while (my $bytesread = read($file, my $buffer, 1024)) { print OUTFILE $buffer; } close (OUTFILE); if($max_size) { if((-s "$Photo_Dir/$filename") > ($max_size * 1024)) { push(@was_too_big, $filename); unlink("$Photo_Dir/$filename"); } else { push(@file_did_save, $filename); } } else { push(@file_did_save, $filename); } } else { push(@did_not_save, $filename); } } }