Beefy Boxes and Bandwidth Generously Provided by pair Networks Bob
We don't bite newbies here... much
 
PerlMonks  

Re: CGI - How to use upload_hook and query the query string ?

by cees (Curate)
on Feb 07, 2006 at 18:06 UTC ( #528582=note: print w/ replies, xml ) Need Help??


in reply to CGI - How to use upload_hook and query the query string ?

If you think about this for a while, then you will realize that it is impossible for you to access any POST parameters before you use the upload hook functionality. The uploaded files are actually part of the POST parameters, so in order to access the POST parameters, you would have to parse the entire POST request (includng the files). After that, what is the point of using the upload hook, since the file is already uploaded and in a temporary file on the server.

The way I got around it is to put the parameters in the URL action of the form as simple query paramaters. Those are accessible to you at any time in the $ENV{QUERY_STRING} variable, and you can fairly easily parse those manually and pull out your parameters before you invoke CGI.pm to parse the POST request.


Comment on Re: CGI - How to use upload_hook and query the query string ?
Re^2: CGI - How to use upload_hook and query the query string ?
by ikegami (Pope) on Feb 07, 2006 at 18:35 UTC
    No need to parse it manually
    my $param = do { local $ENV{'REQUEST_METHOD'} = 'GET'; local $ENV{'CONTENT_LENGTH'}; local @QUERY_PARAM; my $cgi = CGI->new(); $cgi->param(...) }; my $cgi; if ($param) { $cgi = CGI->new(\&hook); } else { $cgi = CGI->new(); }

    Untested, even less so with mod_perl.

    Update: Added local @QUERY_PARAM;.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://528582]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (8)
As of 2014-04-17 11:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (445 votes), past polls