http://qs1969.pair.com?node_id=40331

JP Sama has asked for the wisdom of the Perl Monks concerning the following question:

Dear PerlMonks,

I'm having troubles with a CGI to upload images to my site, I've tried lots of ways to solve it... but none worked!
the code i'm using is something like that:
#!/usr/bin/perl use CGI; use CGI::Carp 'fatalsToBrowser'; CGI::ReadParse(*in); my $homeurl = 'http://joao.warp.psi.br'; my $imagedir = '/www/joao/images'; my ($s,$m,$h,$mday,$mon,$year,$w,$y) = gmtime(time); my $id = $year.$mon.$mday; # save thumbnail my $thumb = &FileUpload($in{iddt}); open(MAKETHUMB,">$imagedir/$idt.gif") or die("Could not save $idt.gif"); print MAKETHUMB $thumb; close(MAKETHUMB); # save image 'idd' my $img = &FileUpload($in{idd}); open(MAKE,">$imagedir/$id.gif") or die("Could not save $id.gif"); print MAKE $img; close(MAKE); # the images are mine! my @files = glob("$id*.gif"); chown 'joao','fodas',@files; # upload file (used here to upload images) sub FileUpload { my ($formfield) = shift; my ($filename,$filesize,$filedata); # load query handle $query = $in{CGI}; if ($filename = $query->param($formfield)) { my $tmp = $/; undef($/); $filedata = <$filename>; $filesize = length($filedata); $/ = $tmp; } # find what the trails look like and get the # true file name without the garbage if ($filename =~ m/[\\\/\:]/gi) { $filename =~ s/[\\\/\:]/\//g; my @tmp = split(/\//,$filename); $filename = pop(@tmp); } return($filedata); }
well, with this i've got the following:
  1. the thumbnail file is not created;
  2. The second image is created but nothing is printed, the image remains with 0k, and is owned by wwwrun;
Because of that, i ask:
why were my images not uploaded?
and why my 'chown' is not working properly?

Can anyone help me? please!
Thank you!!

PS: Oh, and i'm using 'enctype="multipart/formdata"' in my form... and the fields are with the correct names...

#!/jpsama/bin/perl -w
$tks = `mount`;
$jpsama = $! if $!;
print $jpsama;