My understanding is that upload() is only for <input type="file"> only and
that param() handles all of the other form elements. That's how I've
implemented it here and all works as expected.
BTW, I don't do any checking to see how the form was submitted. I use
Apache::Request for all of my form submission methods and everything works
fine, no matter how the information was submitted.
> ----------
> From: John S. Evans[SMTP:[EMAIL PROTECTED]]
> Sent: Thursday, November 18, 1999 5:54 PM
> To: modperl
> Cc: [EMAIL PROTECTED]
> Subject: multipart POST problems
>
> I've been attempting to write a perl module that handles POSTs of type
> multipart/form-data, and have been having a rough time.
>
> I'm using Apache::Request to process the request. I have dumped the
> content-type of the incoming request, and verified that it's
> "multipart/form-data". I can use param() to get the parameters, but I
> can't
> seem to use upload() to access the blocks directly.
>
> I've included the code from my test handler below. Basically it attempts
> to
> access a large parameter MIME block two ways - using param() and using
> upload(). The param() version works fine, but the upload() version can't
> find the block.
>
> Any clues? The only thing that I can think of is that for this test case,
> the MIME type of the "message" block is text/plain (it's in a TEXTAREA
> field, for testing purposes). Is it possible that Apache::Request will
> not
> allow me to process "normal" form fields with upload()?
>
> -jse
>
>
> sub handler
> {
> my $r = shift;
> my $apr = Apache::Request->new($r);
> my $block;
> my $buffer;
>
> $r->content_type('text/html');
> $r->send_http_header();
>
> $buffer = $apr->param('message');
> $r->print("<b>Message:</b><br><pre>$buffer</pre><br>");
>
> $block = $apr->upload('message');
> if ($block)
> {
> $r->print("Found message");
> }
> else
> {
> $r->print("No message");
> }
>
> return OK;
> }
>