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);