Henk: Fileuploadscript

Beitrag lesen

Auf Wunsch von Frank gibt's jetzt doch noch den Quellcode...

#!/usr/bin/perl

Pfad des Upload-Verzeichnisses am Server:

$uploaddir = "/home/strobel/public_html/skimboards/uploads/";

max. Dateigröße [bytes]

$maxsize = 512000;

Mailadresse des Administrators, für die Benachrichtigung

$adminemail = "hstrobel@x-spect.de";

Pfad zum Mailprogramm

$mailprogramm = "/usr/lib/sendmail";

#############################################

Jetzt geht's los:

binmode STDIN;

read STDIN, $Daten, $ENV{'CONTENT_LENGTH'};

@Teile = split /-----------------------------.{9}/, $Daten;

@Name = split /\n/, $Teile[1], 5;
@Email = split /\n/, $Teile[2], 5;
@Datei = split /\n/, $Teile[3], 5;

$Teile[1] enthält den Namen,

$Teile[2] enthält die Emailadresse,

$Teile[3] enthält Dateiinformationen,

while ($Datei[1] =~ /\/)  #
{         #
  $Datei[1] =~ s/^.*\//;   # Der Verzeichnis-Pfad wird entfernt,
}        # der Dateiname bleibt übrig...
        #
$Datei[1] =~ s/"//;    #

chop $Datei[1];  #
chop $Datei[4];  # Letzes Zeichen entfernen...
chop $Datei[4];  #

Überprüfung des dateiformats und der dateigröße:

if($Datei[1] =~ /.jpg$/i  && length $Datei[4] > 100)  
{
  if (length $Datei[4] < $maxsize )
  {
    # dateinamen ermitteln

$filename = $Datei[1];  

# datei speichern:

open DATEI, ">$uploaddir$filename";  
binmode DATEI;  
print DATEI $Datei[4];  
close DATEI;  

# Überprüfung, ob datei vorhanden
  
   if(open(DATEINEU, "<$uploaddir$filename") eq 'false')
   {
        print "Location: ../error1.html\n\n"; die;
   }
      else { print "Location: ../thanxpic.html\n\n"; }
  }
  else { print "Location: ../error2.html\n\n"; die; }
}
else { print "Location: ../error3.html\n\n"; die; }

Emailbenachrichtigung:

open(MAIL,"$mailprogramm -t") die "Mailprogramm nicht gefunden!";

print MAIL "To: $adminemail\n";
print MAIL "From: Auto file upload notification\n";
print MAIL "Subject: Fileupload auf www.skimboards.de!\n\n";

print MAIL "Upload der Datei "$filename"\n";
print MAIL "von $Name[3] ( $Email[3] )\n\n";
print MAIL "http://members.pop-hannover.de/~strobel/skimboards/uploads/";
close(MAIL);