Documentation
Perl upload handler
Perl uploader is contributed by 3rd party and not supported by author of this site.
Below is Perl solution kindly provided by Dave Stahr:
This one is obviously very simple, does no error checking to see if a file already exists, and doesn't handle partitioned uploads or anything else more advanced that I haven't even looked at yet, but should be enough to get someone who knows perl up and running quite quickly.
#!/usr/bin/perl
#Save this script wherever CGI access is allowed on your server.
#This script needs to be executable by the web server user.
#If these two lines confuse you in any way, you might need to ask for support.
#
#Script written by Dave Stahr - Virtual Impressions Incorporated
# http://www.virtualimpressions.com
my $LOGFILE = '/tmp/jumploader.log'; #Location of log file
my $SAVEPATH = '/tmp'; #Location to save files
#---------- You shouldn't need to modify anything below this line ------------#
use CGI; #Requires CGI perl module
my $q = new CGI;
my %keys;
foreach my $param ($q->param() )
{
$keys{$param} = $q->param($param);
my $lt = localtime();
if ( $param eq 'file' )
{
my $remote_file = $q->param('file');
my $size = 0;
open(SAVEFILE,">$SAVEPATH/$keys{'fileName'}");
while (<$remote_file>)
{
$size += length($_);
print SAVEFILE;
}
close(SAVEFILE);
my $lt = localtime();
open(LOG,">>$LOGFILE");
if ( ! -d "$SAVEPATH" )
{
print LOG "FATAL - File not uploaded; path $SAVEPATH does not exist\n";
}
elsif ( ! -e "$SAVEPATH/$keys{'fileName'}" )
{
print LOG "FATAL - File not uploaded; hint: chmod 777 $SAVEPATH\n";
}
else
{
if ( $keys{'fileLength'} != $size )
{
print LOG "WARNING - File size mismatch. Jumploader:$keys{'fileLength'} Disk:$size\n";
}
print LOG <<EOT;
Time: $lt
Filename: $keys{'fileName'}
Size: $size
IP: $ENV{'REMOTE_ADDR'}
Browser: $ENV{'HTTP_USER_AGENT'}
--------------------------------------------------------------------
EOT
print $q->header, $q->start_html, $q->end_html;
}
close(LOG);
}
}