[Ilugc] [uploading file on windows serv er using perl cgi]Perl CGI

  • From: rkrajeshkumar87@xxxxxxxxx (Rajesh kumar)
  • Date: Tue Nov 10 15:22:37 2009

On Tue, Nov 10, 2009 at 1:32 PM, Girish Venkatachalam <
girishvenkatachalam@xxxxxxxxx> wrote:

I want more information for me to be able to help you.

Please give the exact error.

-Girish

On Tue, Nov 10, 2009 at 12:14 PM, Rajesh kumar
<rkrajeshkumar87@xxxxxxxxx> wrote:
I wrote a simple perl cgi in unix to upload a file in linux server and it
worked and when i tried the code in windows server with some little
modification regarding to work on windows it failed.
I tried some googling and i dint find any code related to upload on
windows
server. so i need some help in resolving this

The code is below

FILE: UPLOAD.PL

use CGI;
use CGI::Carp qw ( fatalsToBrowser );
use File::Basename;
$safe_filename_characters = "a-zA-Z0-9_.-";
$upload_dir = "c:/";
$query = new CGI;
foreach $i (@values) {
($varname, $data) = split(/=/, $i);
$FORM{$varname} = $data;
}
$filename = $FORM{'file_upload'};
$name = $FORM{'name'};
if ( !$filename )
{
$filename = 'f:/input.txt'
}

my ( $name, $path, $extension ) = fileparse ( $filename, '\..*' );
$filename = $name . $extension;
$filename =~ tr/ /_/;
$filename =~ s/[^$safe_filename_characters]//g;

if ( $filename =~ /^([$safe_filename_characters]+)$/ )
{
 $filename = $1;
}
else
{
 die "Filename contains invalid characters";
}

my $upload_filehandle = $query->upload("file_upload"); # i Think the
script
produces error here

open ( UPLOADFILE, ">$upload_dir/$filename" ) or die "$!";
binmode UPLOADFILE;

while ( <$upload_filehandle> )
{
 print UPLOADFILE;
}

close UPLOADFILE;

print $query->header ( );
print $query->start_html('upload');
print $name." file Uploaded";
print $query->end_html();

and to reference my html page is

FILE:UPLOAD.HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en";>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>File Upload</title>
 </head>
 <body>
  <form action="/cgi-bin/upload.cgi" method="post"
enctype="multipart/form-data">
    <p>Photo to Upload: <input type="file" name="file_upload" /></p>
    <p>Name: <input type="text" name="name" /></p>
    <p><input type="submit" name="Submit" value="Submit Form" /></p>
  </form>
 </body>
</html>

--
Regards
Rajesh Kumar R.K
www.rkrajeshkumar.in
_______________________________________________
To unsubscribe, email ilugc-request@xxxxxxxxxxxxx with
"unsubscribe <password> <address>"
in the subject or body of the message.
http://www.ae.iitm.ac.in/mailman/listinfo/ilugc




--
Gayatri Hitech
web: http://gayatri-hitech.com

SpamCheetah Spam filter:
http://spam-cheetah.com
_______________________________________________
To unsubscribe, email ilugc-request@xxxxxxxxxxxxx with
"unsubscribe <password> <address>"
in the subject or body of the message.
http://www.ae.iitm.ac.in/mailman/listinfo/ilugc


I have corrected by doing some modifications and the file is below

#!/perl/bin/perl -wT
use CGI;
use CGI::Carp qw ( fatalsToBrowser );
use File::Basename;
$safe_filename_characters = "a-zA-Z0-9_.-";
$upload_dir = "c:/";
$query = new CGI;
$fname = $query->param('file_upload');
if ( $fname =~ /^([$safe_filename_characters]+)$/ )
{
 $fname = $1;
}
else
{
 die "Filename contains invalid characters";
}

my $upload_filehandle = $query->upload('file_upload');

open ( UPLOADFILE, ">$upload_dir/$fname" ) or die "$!";
binmode UPLOADFILE;

while ( <$upload_filehandle> )
{
 print UPLOADFILE;
}

close UPLOADFILE;
print $query->header();
print $query->start_html("upload");
print $fname." file Uploaded";
print $query->end_html();

This Code well works in Firefox but in ie i am getting internal server error
can you help me

Other related posts: