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

Reply via email to