Dear Monks,
i´m desperated ;-) i´m want to use the cgi.pm to upload a file via a webinterface, but the filehandle <$upload_Handle> give exactly nothing back.. :-(
if ($main::var{upload_file} ne "") {
my @new_IP_data;
if ($main::var{submit} eq "read") {
my $loaded_IP_list;
my $allowed_Types = "txt";
my $max_Size = 4096;
my $filename = $q->param('upload_file');
$filename =~ s/.*[\/\\](.*)/$1/;
$filename =~ s/\s/_/;
my $upload = $q->param('upload_file');
my $file_Size = -s $upload;
#$file_Size /= 1000;
if ($file_Size > $max_Size) {
print "<p>file is too big - only $max_Size all
+owed - your file got $file_Size bytes</p>\n";
(my $kbsize,my $byt) = split(/\./, $file_Size)
+;
print "~ $kbsize KB";
exit;
}
(my $file_ID,my $type) = split(/\./, $filename);
if($filename !~ /^\w+\.($allowed_Types)/) {
print "only *.txt allowed";
exit;
}
$file_ID = time();
if (-e "$upload_Dir/$file_ID.$type") {
print "Content-type: text/html\n\n";
print "file already exist";
} else {
#### doesnt work
$main::q::DISABLE_UPLOADS = 0;
my $upload_Handle = $q->upload($filename);
chdir($upload_Dir) or die "could not read target folder: $!";
if (!$upload_Handle && $q->cgi_error) {
print $q->header(-status=>$q->cgi_error);
exit 0;
}
my $error = $q->cgi_error;
if ($error) {
print $q->header(-status=>$error),
$q->start_html('Problem'),
$q->strong($error);
exit 0;
}
while (<$upload_Handle>) {
print;
}
print Dumper $q;
print $upload;
while(<$upload_Handle>){print $_;}
print $upload_Dir;
exit;
i still get no output. $q is initialised. dont know how to fix it.
fyi: on an windows apache it works fine. but now i ported the script to a opensuse box. if i try to upload a file from my windows machine to the linux webserver where the script runs it give nothing back, even no errors.
$perlig =~ s/pec/cep/g if 'errors expected';