[Cgi-session-user] Weird correlation between CGI.pm and CGI::Session when uploading files
Brought to you by:
sherzodr
From: <ste...@gm...> - 2007-07-28 15:14:23
|
Hi *, I've just found a quite curious behaviour when using standard CGI module and CGI::Session in an upload script. Maybe somebody can explain that to me? Or is it a bug anywhere? *Description*: I use the uploadInfo method of the CGI module for getting the content type of an uploaded file. If I first create the CGI object and afterwards the new CGI::Session object, everything works fine as intended. *<snippet>* use CGI qw/:standard/; use CGI::Carp qw/fatalsToBrowser/; use CGI::Session; # this is the place to focus on ;) my $cgi = new CGI; # create CGI instance # create CGI::Session instance my $CGISession = new CGI::Session(undef, undef, {Directory=>'./_tmp__SESSIONS', UMask=>0664}) or die CGI::Session->errstr; my $uploadedFile = $cgi->param('uploadedFile'); my $ContentType = $cgi->uploadInfo($uploadedFile)->{'Content-Type'}; # <= here it is working... print "the determined content-type is: ".$ContentType."<br />"; *</snippet>* *But:* When switching the instantiation lines for CGI and CGI::Session, the uploadInfo method suddenly returns an error: ... # this breaks the uploadInfo() method (it returns undef instead of a hash reference) my $CGISession = new CGI::Session(undef, undef, {Directory=>'./_tmp__SESSIONS', UMask=>0664}) or die CGI::Session->errstr; my $cgi = new CGI; # create CGI instance # create CGI::Session instance ... > *upload.pl: Can't use an undefined value as a HASH reference at ..*. (=> the line with uploadInfo) Does anybody know why that happens? I had some restless hours until I found the problem (by chance!)... While writing this down, I could imagine that maybe the import of :standard CGI methods into local namespace has something to do with it?! Best regards so far, and have a nice weekend. Stefan. |