Bill, Thank you for your reply.
It works now, using the code snippet you sent. I was setting PerlSetVar MasonArgsMethod mod_perl in httpd.conf, yet had this in my handler.pl : my $ah = new HTML::Mason::ApacheHandler( comp_root => '/opt/local/apache2/htdocs/', data_dir => '/opt/local/mason-data', allow_globals => ['$dbh', '%session']); I just added args_method => 'mod_perl' to the above and it works fine. I overlooked this. Is it not common to do it as I did? Thanks again Ogden > In my startup.pl file I have the following: > > use Apache2::Request; > use Apache2::RequestRec; > use Apache2::RequestUtil; > use Apache2::Connection; > use Apache2::Cookie; > use Apache2::Const -compile => qw(DECLINED FORBIDDEN OK); > use Apache2::Upload; > > Maybe you need the Apache2::RequestRec/Util modules. > > -Bil > > On Nov 16, 2006, at 7:02 AM, fixed wrote: > > > Thank you very much for your reply. > > > > This is odd - I have the exact same setup as you and this is what I > > did: > > > > if ( exists $ARGS{'file'} ) { > > my $upload = $r->upload('file'); > > .... > > } > > > > But I get this error: > > > > 'Can't locate object method "upload" via package > > "Apache2::RequestRec"' > > > > I even put the use Apache2::Upload in there to no avail. > > > > In my handler.pl, I have: > > > > use Apache2::Request; > > use Apache2::Upload; > > > > Any suggestions? > > > > Thanks > > > > Ogden > > > > On Wed, 15 Nov 2006, Bill Walz wrote: > > > >> Ogden, My setup is as follows along with the following in my > >> httpd.conf > >> > >> PerlSetVar MasonArgsMethod mod_perl > >> PerlOptions +GlobalRequest > >> > >> Apache2 2.2.3 > >> Perl 5.8.8 > >> Mod Perl2 2.0.2 > >> Lib APR2 2.08 > >> Mason 1.35 > >> > >> Here is the init section of my component, the name of my file input > >> tag is "userfile", yours was "file". This is not exactly safe as the > >> file could be huge. And I could not get the size() function to work, > >> when needed I use approximate value from: $ENV{CONTENT_LENGTH} > >> > >> <%init> > >> # handle upload if requested > >> if (exists $ARGS{'b_upload'}) { > >> > >> # create an Apache2::Upload object > >> my $upload = $r->upload('userfile'); > >> > >> if ($upload) { > >> # get a filehandle for uploaded file > >> my $upload_fh = $upload->fh; > >> > >> # binmode > >> binmode $upload_fh; > >> > >> # suck in file > >> my $file_data = join('',<$upload_fh>); > >> > >> ....... SNIP ....... > >> > >> </%init> > >> > >> -Bill > >> > >> On Nov 15, 2006, at 5:26 PM, Ogden wrote: > >> > >>> Hi, > >>> > >>> I'm trying to allow files to be uploaded through Mason. My setup > >>> is as > >>> follows: > >>> > >>> Apache 2.2.3 > >>> Mason 1.3.4 > >>> mod_apreq2 20051231/2.6.0 > >>> mod_perl 2.0.2 > >>> > >>> > >>> The following is my code: > >>> > >>> <form METHOD="POST" ENCTYPE="multipart/form-data"> > >>> <input type="file" name="file"> > >>> <input type="submit"> > >>> </form> > >>> Mason Version: <% $HTML::Mason::VERSION %><br> > >>> <%perl> > >>> use Apache2::Upload; > >>> my $content = ''; > >>> > >>> my $req = Apache2::Request-> new($r); > >>> my $upload = $req-> upload("file"); > >>> my $size = $upload-> size; > >>> > >>> $upload-> slurp($content); > >>> </%perl> > >>> > >>> > >>> <form METHOD="POST" ENCTYPE="multipart/form-data"> > >>> <input type="file" name="file"> > >>> <input type="submit" name="action" value="Upload" /> > >>> </form> > >>> Mason Version: <% $HTML::Mason::VERSION %><br> > >>> <%perl> > >>> > >>> if ( $action eq 'Upload' ) { > >>> > >>> use Apache2::Upload; > >>> my $content = ''; > >>> my $req = Apache2::Request-> new($r); > >>> my $upload = $req-> upload("file"); > >>> my $size = $upload-> size; > >>> $upload-> slurp($content); > >>> > >>> } > >>> </%perl> > >>> > >>> After reading online, it seems I have to add this to my httpd.conf: > >>> > >>> PerlSetVar MasonArgsMethod mod_perl > >>> > >>> Which I did. The file upload process still quits with a "End of file > >>> found" error. > >>> > >>> How can I confirm that mod_perl is actually being set to > >>> MasonArgsMethod? > >>> Do I put anything special into handler.pl, which is: > >>> > >>> my $ah = new HTML::Mason::ApacheHandler( comp_root => '/opt/local/ > >>> apache2/htdocs/', > >>> data_dir => '/opt/local/ > >>> mason-data', > >>> allow_globals => ['$dbh', > >>> '%session']); > >>> > >>> sub handler { > >>> my $r = shift; # Apache request object > >>> my $status; > >>> return $ah->handle_request($r); > >>> > >>> } > >>> > >>> Any ideas? > >>> > >>> Thank you > >>> > >>> Ogden > >>> > >>> > >>> -------------------------------------------------------------------- > >>> -- > >>> --- > >>> Take Surveys. Earn Cash. Influence the Future of IT > >>> Join SourceForge.net's Techsay panel and you'll get the chance to > >>> share your > >>> opinions on IT & business topics through brief surveys - and earn > >>> cash > >>> http://www.techsay.com/default.php? > >>> page=join.php&p=sourceforge&CID=DEVDEV > >>> _______________________________________________ > >>> Mason-users mailing list > >>> Mason-users@lists.sourceforge.net > >>> https://lists.sourceforge.net/lists/listinfo/mason-users > >> > > > > ---------------------------------------------------------------------- > > --- > > Take Surveys. Earn Cash. Influence the Future of IT > > Join SourceForge.net's Techsay panel and you'll get the chance to > > share your > > opinions on IT & business topics through brief surveys - and earn cash > > http://www.techsay.com/default.php? > > page=join.php&p=sourceforge&CID=DEVDEV > > _______________________________________________ > > Mason-users mailing list > > Mason-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/mason-users > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Mason-users mailing list > Mason-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/mason-users > ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Mason-users mailing list Mason-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mason-users