http://qs321.pair.com?node_id=528582


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.

Replies are listed 'Best First'.
Re^2: CGI - How to use upload_hook and query the query string ?
by ikegami (Patriarch) 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;.