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

Reply via email to