stuck in perl cgi to upload a file to server


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting stuck in perl cgi to upload a file to server
# 1  
Old 06-16-2005
stuck in perl cgi to upload a file to server

hi,
i m working on a perl cgi script which uploads a file to the server. i m stuck. i hav written the errors.
plz help.

Sachin Kaw
______________________________________________________________________
#!/usr/bin/perl -w

use CGI;
use CGI qw(:standard);
use strict;
use POSIX qw(strftime);
use Spreadsheet::WriteExcel;
#use HTML::EasyTable;
use POSIX qw(tmpnam);
use CGI::Carp qw(carpout);

$CGI::POST_MAX=1024 * 5000; # max 5MB posts

my $logfile = "/tmp/upload-mylog.log";

BEGIN {
use CGI::Carp qw(carpout);
open(LOG, ">>/tmp/upload-cgi.log") or
die("Unable to open cgi.log: $!\n");
carpout(\*LOG);
}

# your custom running log function

sub mylog
{
my $curtime = strftime "%a %b %d %T", localtime;
my $curfunc = (caller(1))[3];

if( !defined $curfunc ){
$curfunc = "main:";
}

my $FL;
open( FL, ">>$logfile" ) || die "could not open file";
print FL "$curtime: $curfunc: $_[0]\n"; # This line prints to the log

close (FL);
}

my $q = new CGI;
#my $filename='filename';
my $upload_filehandle;


mylog ( "______ mylog ( __LINE__ . ": Before entering if block" );


if (param()) {

mylog ( __LINE__ . ": We have the form populated." );

# upload directory
my $upload_dir = "/home/skw";

# reading the form variables
my $filename = $q->param('filename');
mylog("filename = $filename");
$filename =~ s/.*[\/\\](.*)/$1/;
mylog("file = $filename");

# getting the file handle
$upload_filehandle = $q->upload('filename');
mylog("fd = $upload_filehandle"); #error 1

# saving the file
open (OUTFILE, ">$upload_dir/$filename");

#binmode UPLOADFILE;

while ( <$upload_filehandle> ) $error 2 & 3
{
print OUTFILE $_;
}

close OUTFILE;
print $q->header();
#print <<END_HTML;

}
else {

mylog ( __LINE__ . ": Form is not populated." );
#$strhtml .= $q->end_html;
}
___________________________________________________________________________

error 1:- Use of uninitialized value in <HANDLE>

error 2:- Use of uninitialized value in concatenation (.)

error 3:- readline() on unopened filehandle
# 2  
Old 06-16-2005
I'm uncertain about file uploads. I previously made one in a similar manner with the CGI module and it worked on my system. A wild guess ... Your form has a file upload control with the name exactly as 'filename'? And does the $filename return some valid filename? Also verify that the permission of your upload directory is writable by the webserver running the script. Check the CGI module doc for possible locations the module will try for the upload spooling directories.
# 3  
Old 06-18-2005
again stuck

yes,my form has a file upload control with the name exactly as 'filename'.

yes, $filename retuns a valid filename.

yes, the permission of your upload directory is writable by the webserver running the script.

inspite of all this, my script is still not working.

the problem is with the file handler. the script is not reading the file through the file handler.
Do i have to include any module to use the file handler?

plz help
# 4  
Old 06-18-2005
Normally that should be it. Because what upload() returns is a filehandle you should be able to read it right away (provided a valid filehandle is returned). But now obviously the filehandle is undef. That was why I tried to make the guess that probably your temporary directory could not be written into, and so cannot be open()ed so no valid filehandle is returned.

Try this. Log the output of

$q->cgi_error

as the program proceeds. See if you get any error messages before or around the upload() method.
# 5  
Old 06-26-2005
#my $filename='filename';
###$filename isnt set here (as it's commented out), nor anywhere else so.....

this means $filename =~ s/.*[\/\\](.*)/$1/; will fail as $filename isnt initilized.

And so

open (OUTFILE, ">$upload_dir/$filename"); cant open a valid handle

so when it writes handle is invalid.

Tip: try using open (OUTFILE, ">$upload_dir/$filename") or die ($!);

AAR.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Proxy Server

Upload file from desktop to UNIX server via putty

I have a requirement of following - 1. Transfer excel spreadsheet from desktop to unix server 2. Open the spreadsheet and read the sql row by row at a time 3. Run each sql on database using unix and then send output back to spreadsheet that was uploaded earlier and then transfer file back to... (12 Replies)
Discussion started by: Analabhatla
12 Replies

2. Shell Programming and Scripting

Perl CGI : unable to download the excel sheet from perl cgi page

Hi All, I have written an cgi perl script that displays an image(Excel image) and when clicked on that Image I need to download a excel sheet. I made sure that excel sheet exists in the folder with the given name but still I am not able to download the sheet. print "<center><table... (2 Replies)
Discussion started by: scriptscript
2 Replies

3. Shell Programming and Scripting

Perl cgi pages out of cgi-bin folder in WINDOWS

Hi team, I have a typical problem with cgi pages in apache webserver in WINDOWS I am able to execute(display) the pages that are saved in cgi-bin folder. But I am not able to execute the pages stored in htdocs or other folder other than cgi-bin folder. Could anyone please let me know how... (1 Reply)
Discussion started by: scriptscript
1 Replies

4. Shell Programming and Scripting

Generate file and Upload to SFTP server.

Xperts, My requirement is something like this, I have a sql script which i need to embed in a shell. The sql (oracle) script will generate a .csv file in some Unix directory. the approximate file size is around 10 mb which i need to upload to an sftp server. My concern here is how to make... (5 Replies)
Discussion started by: Showdown
5 Replies

5. Shell Programming and Scripting

Script to upload latest file to other server via FTP

Hello, I have a script that finds the latest version of a file in a folder on my Minecraft server. I'm trying to come up with something that will then FTP that file over to my fileserver. Here's what I have that finds the newest file: find /home/mc/archive/sbhouse -type f -mtime +45 -exec... (7 Replies)
Discussion started by: nbsparks
7 Replies

6. Web Development

problem with exporting vairable from one perl cgi to another perl cgi script while redirecting.

Can anyone tell me how to export a variable from one perl CGI script to another perl cgi script when using a redirect. Upon running the login.pl the user is prompted to enter user name and password. Upon entering the correct credentials (admin/admin) the user is redirected to welcome page. My... (3 Replies)
Discussion started by: Arun_Linux
3 Replies

7. IP Networking

upload file using cgi

I am using cgic lib to implement file upload, but the speed is very very slow... what is even worse, the file uploaded to my website is corrupted. pakages captured by wireshark: ... 9606 56.258491 192.168.7.77 192.168.7.235 HTTP Continuation or non-HTTP traffic... (5 Replies)
Discussion started by: vistastar
5 Replies

8. Shell Programming and Scripting

upload file to webdav server

Hi all i have a such question this is my shell script my script must upload file to webdav server ////////////////////////////////////////////////////////////////////////////////////////////////////////////// #!/bin/sh ###... (1 Reply)
Discussion started by: knut
1 Replies

9. Shell Programming and Scripting

upload excel file contents to server

Hi I have an excel file with only 5 rows .I want to uplaod those 5 rows to a database using a shell script.Is this possible.If so where do i start. Thnks (1 Reply)
Discussion started by: magikminox
1 Replies
Login or Register to Ask a Question