Google Answers Logo
View Question
 
Q: Fileupload: Perl 5.8.6, CGI 3.07. It DID worked in perl 5.6.1 ( No Answer,   2 Comments )
Question  
Subject: Fileupload: Perl 5.8.6, CGI 3.07. It DID worked in perl 5.6.1
Category: Computers > Programming
Asked by: devanchya-ga
List Price: $25.00
Posted: 18 Mar 2005 05:31 PST
Expires: 19 Mar 2005 17:33 PST
Question ID: 496672
Hello all,

I have had to do a very fast switch to a new server for a client. The
new server is running 5.8.6 when the old server was running 5.6.1. The
new server is also running CGI 3.07 when the old one was running
2.752... [Hope this helps]

The problem is, both servers are Cobalt4's with a CGIwrap on them. I
have managed to get the site working 99.9% on the new server except
for the file uploading. The code worked on the old server perfectly,
and I've torn my hair out for 5 hours now trying to figure out why it
is not working.

Here's the code snippet

my $query = new CGI();
my $fh = $query->upload("auth_upload");
if(!defined $fh)
{
 open(OUTFILE,">".ORDERAUTH."w$orderid"."auth"."$type") or
oops('file_write_failed', $!);
 
  while (<$fh>)
  {
print OUTFILE $_;
  } 
 close(OUTFILE);
}


The problem is, $fh (which I've checked a billions ways) is always
coming out empty (undefined) no matter what. It's perfectly defined in
perl5.6.1

when I do a simple param('auth_upload'); the file name does show up correctly.

Any help GREATLY and BEGGINGLY accepted. This is drving me nuts and I
have until Saturday to fix it (when the old server goes bye-bye)

Thank you!
Answer  
There is no answer at this time.

Comments  
Subject: Re: Fileupload: Perl 5.8.6, CGI 3.07. It DID worked in perl 5.6.1
From: ullfindsmit-ga on 18 Mar 2005 21:37 PST
 
are you sure on the <FORM .....></FORM> you have the input type to
FILE and not TEXT

also, try using this code to help you debug.

	 use strict;
	 use FileUpload;
	 use CGI qw(-private_tempfiles :standard);
	 use vars qw($q $fu);

	 $q = new CGI;
	 $fu = new FileUpload($cgi->param('ufile'));

	 # The uploaded file's size.
	 $size = $fu->size;

	 # Get the filename.
	 $filename = $fu->orig_filename;

	 # Get the full path of the file.
	 $filepath = $fu->orig_filepath;

	 # Get the characters allowed.
	 @chararr = $fu->allow_char;

	 # Add the characters allowed.
	 @chararr = $fu->allow_char('char1', 'char2');

	 # Get the extensions not allowed.
	 @extarr = $fu->deny_ext;

	 # Add the extensions not allowed.
	 @extarr = $fu->deny_ext('cgi', 'shtml');

	 # Save the uploaded file as the original filename.
	 $byteswritten = $fu->save;

	 # Save the uploaded file by using "newfilename".
	 $byteswritten = $fu->save_as("newfilename");

	 # Get the filehandle's current position.
	 $pos = $fu->get_pos;

	 # Set the filehandle position.
	 $fu->set_pos($newpos);

	 # Read a line.
	 $aline = $fu->get_line;

	 # Read many lines.
	 @lines = $fu->get_lines;


lemme know
-Smit.
Subject: Re: Fileupload: Perl 5.8.6, CGI 3.07. It DID worked in perl 5.6.1
From: devanchya-ga on 19 Mar 2005 17:33 PST
 
Issue solve.d

The issue is that the new CGI's only allow fileupload thorugh the
first call of CGI, creating a fake global solved it til a re-write's
possible.

Important Disclaimer: Answers and comments provided on Google Answers are general information, and are not intended to substitute for informed professional medical, psychiatric, psychological, tax, legal, investment, accounting, or other professional advice. Google does not endorse, and expressly disclaims liability for any product, manufacturer, distributor, service or service provider mentioned or any opinion expressed in answers or comments. Please read carefully the Google Answers Terms of Service.

If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you.
Search Google Answers for
Google Answers  


Google Home - Answers FAQ - Terms of Service - Privacy Policy