I simplified everything to the bare bones. Nothing is getting passed. I am
at a complete loss. If anyone has a few minutes, just try running this.
You should be able to point it toward a text/plain file and have it
displayed below the file upload form.
No matter what I do, all I am seeing for content_type is:
CONTENT_TYPE: multipart/form-data;
boundary=---------------------------7d2fb231407ee
ie, nothing.
Here is the Apache config
PerlModule testUpload
<Location /testUpload>
SetHandler perl-script
PerlHandler testUpload
PerlSendHeader Off
# limit POSTS so that they get processed properly
<Limit POST>
PerlInitHandler POST2GET
</Limit>
</Location>
Here is the code:
package testUpload;
use strict;
our %results;
our %messages;
##############################
### START LOADING MODULES ###
##############################
use Apache::Request ();
##############################
### HANDLER ###
##############################
sub handler{
use Apache;
use Apache::Constants qw(:common);
my $r = shift;
Apache->request($r);
&main($r);
return OK;
}
##############################
### START OF MAIN LOGIC ###
##############################
sub main{
my $r = shift;
my $q = Apache::Request->new($r, DISABLE_UPLOADS => 0, POST_MAX =>
20480000);
my $cgi = CGI->new();
#########################
## START FORM ##
#########################
$results{content} .= $cgi->start_multipart_form;
$results{content} .= $cgi->filefield(-name=>'uploaded_file',
-default=>'starting value',
-size=>50,
-maxlength=>80);
$results{content} .= $cgi->submit();
$results{content} .= $cgi->endform;
#########################
## START UPLOAD FILE ##
#########################
my $upload = $q->upload || undef;
my $fh = ( defined($upload) ? $upload->fh : undef );
$results{content} .= "Upload File<br />";
if (defined( $fh )) {
while (<$fh>) {
$results{content} .= $_;
}
}
#########################
## START DEBUG ##
#########################
foreach my $var (sort keys %ENV) {
push(@{$messages{debug}},( "$var: $ENV{$var}" )) if
($var =~ /content/i);
}
foreach my $var ($q->param) {
push(@{$messages{debug}},( "$var: ".$q->param($var) ))
if $var;
}
#########################
## START MESSAGES ##
#########################
# generate messages and/or errors if any
foreach my $type (keys %messages) {
my $status = join($cgi->p,@{$messages{$type}}) if
$messages{$type};
$results{contenterrata} .= $status if $status;
}
#########################
## START OUTPUT ##
#########################
# send results to browser
$r->send_http_header('text/html');
print $cgi->start_html('File Upload Test');
print $cgi->h1('Content') . $results{content};
print $cgi->h1('Errata') . $results{contenterrata};
print $cgi->end_html();
# clean up for mod_perl
%results = ();
%messages = ();
}
1;
: -----Original Message-----
: From: Issac Goldstand [mailto:[EMAIL PROTECTED]]
: Sent: Monday, March 18, 2002 9:37 AM
: To: Vuillemot, Ward W
: Cc: [EMAIL PROTECTED]
: Subject: Re: mod_perl does not see multipart POSTs
:
:
: I'm not sure I understand what you're asking... Apache,
: on it's own,
: does not support any internal parsing of POST data, multipart or
: otherwise, so why should mod_perl? For this, we have the
: Apache::Request library in mod_perl (Which is the
: mod_perl interface to
: the libapreq library for Apache's C API). libapreq supports
: multipart/form-data, even without a file upload...
:
: Issac
:
: Vuillemot, Ward W wrote:
:
: >All,
: >
: >I am still trying to figure out why my setup of mod_perl
: does not have
: >multipart POSTs. I rebooted my machine, and found that,
: whereas I reported
: >before mod_perl would try to reload the page (which it
: should not but send
: >out a text/plain attachment for download), it appears
: the script (running as
: >a perl handler) does not see any of the multipart POST.
: Vanilla posts are
: >not a problem, though. Even if the information being
: sent via multipart is
: >_not_ a file to upload to the server, the information is
: lost in transit.
: >
: >Here is what is odd.
: >
: >The same scripts/modules unmodified and running as
: perl_cgi are okay.
: >Multipart forms allow me to upload files, et cetera. In
: short, I am
: >confident the problem is not with my programming.
: >
: >I am using the code snippet, POST2GET, to capture the
: one-time read of POST
: >and storing as if it was retrieved via GET.
: >
: >Any ideas how to debug this?
: >
: >I REALLY REALLY would love some feedback. I would love
: to think that all my
: >effort to stay away from M$ ASP are worth it -- esp.
: when I stand up to
: >defend Perl, Apache, and mod_perl in an environment that
: is decidely
: >M$-bent.
: >
: >Thanks!
: >Ward
: >
:
:
: