So maybe something along these lines
use CGI 4.20; use File::Copy qw/ copy /; for my $key ( $cgi->all_parameters ){ for my $fh( $cgi->upload( $key ) ){ if(!$fh && $cgi->cgi_error ){ print "<p> $fh got problem", $cgi->cgi_error, "\n"; next; } else { binmode $fh; my $destFilename = "$destination/".WashFilename( "$fh" ); copy( $fh, $destFilename ) or die "Copy to ( $destFilename ) failed: (( $! ))(( $ +^E ))"; } } } ... sub WashFilename { use File::Basename; my $basename = basename( shift ); # untainted , only use a-z A-Z 0-9 and dot $basename = join '', $basename =~ m/([.a-zA-Z0-9])/g; # basename is now, hopefully, file.ext ## so to ensure uniqueness, we adulterate it :) my $id = $$.'-'.time; my( $file, $ext ) = split /\./, $basename, 2 ; return join '.', grep defined, $file, $id, $ext; } ## end sub WashFilename
In reply to Re^2: How to save multiple uploaded files on the server?
by Anonymous Monk
in thread How to save multiple uploaded files on the server?
by NivoReloaded
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |