I have copied a script out of "CGI programming with perl", to see if I
understand how uploading a file would work. So far it doesn't - the code
checks correctly with perl -c but then I get an internal server error 500. I
think I found a minor error in the book example already :( Can anyone help?
I have apache and perl 5.6.0.
The apache error log has:
Can't use an undefined value as a symbol reference at ... line 43
Premature end of script headers
I downloaded the latest CGI module I could find, since there was a note that
upload was added to CGI 2.47 perllocal.pod shows CGI 2.7.1, but maybe there
is some kind of restart I need to do? I didn't know how to check what
version I had *before* I updated, so this may be a red herring.
Here are the relevanet bits of code:
use strict;
use CGI;
use Fcntl qw( :DEFAULT :flock );
use constant UPLOAD_DIR => "/usr/local/apache/data/uploads";
use constant BUFFER_SIZE => 16_384;
use constant MAX_FILE_SIZE => 1_048_576; # Limit each upload to 1 MB
use constant MAX_OPEN_TRIES => 100;
use constant MAX_DIR_SIZE => 175 * MAX_FILE_SIZE;
$CGI::DISABLE_UPLOADS = 0;
$CGI::POST_MAX = MAX_FILE_SIZE;
my $q = new CGI;
$q->cgi_error and error( $q, "Error transferring file: " . $q->cgi_error );
my $file = $q->param( "file" ) || error ($q, "No file received.");
my $filename = $q->param( "filename" ) || error ($q, "No filename
entered.");
my $fh = $q->upload( $file );
my $buffer = "";
[snipped, next line is line 43]
binmode $fh;
binmode OUTPUT;
# Write contents to output file
while (read ($fh, $buffer, BUFFER_SIZE) ) {
print OUTPUT $buffer;
}
close OUTPUT;
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]