You're using single quotes when opening OUTFILE. Therefore, you're always writing to a file named '$filehandle'-- not the contents of the variable, but the string '$filehandle' itself. Change those to double quotes. Better yet, use File::Temp to create a temporary file if you're using 5.6.sub doUpload { my ($bytes, $buffer, $bytesread); my $filehandle = CGI::param('filepath'); open OUTFILE, '>$filehandle' or die "Couldn't open output file: $!\n";
Additionally, you should use upload() instead of param() to get the uploaded filehandle for security reasons. Namely, instead of saying:
saymy $filehandle = CGI::param('filepath');
Since upload() returns undef if there's no upload field with the given name, it'll error out if the user didn't upload a file. More secure, since the user can't try to mess you up by providing a text input to 'filepath'.my $filehandle = upload('filepath') or die "No file uploaded!";
Note: Code untested, since I don't have a web server handy.
stephen
In reply to Re: need help with file uploading
by stephen
in thread need help with file uploading
by gilbert
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |