Fileupload-script
Robert Allerstorfer
Einige postings weiter unten hat Frank Schönmann sein perl-script vorgestellt, mit dem man dateien auf einen server-rechner uploaden kann. Das entsprechende HTML-formular findet sich in Stefan's tchg.htm. Die angabe von maxlength=xxxbytes wird allerdings sowohl von Netscape, als auch vom Explorer ignoriert - ich hab's ausprobiert! Deshalb wäre es gut, eine filesize-Abfrage im perl-script zu machen und eine meldung auszugeben, falls das upzuloadende file größer als das oben im script angegebene $maxsize ist.
Hier sein script nochmal, leicht modifiziert, schon etwas benutzerfreundlicher und die aktuelle problematik aufgreifend:
====cut====
#!C:/Programme/Perl/bin/perl.exe
$url = "/files/upload.html"; # URL des Fensters, das nach dem Upload angezeigt wird
$uploaddir = "D:/Web/files/upload/"; # Pfad des Upload-Verzeichnisses am Server
binmode STDIN;
read STDIN, $Daten, $ENV{'CONTENT_LENGTH'};
@Teile = split /-----------------------------.{9}/, $Daten;
@Datei = split /\n/, $Teile[1], 5;
while ($Datei[1] =~ /\/) { $Datei[1] =~ s/^.*\//; }
$Datei[1] =~ s/"//;
chop $Datei[1];
chop $Datei[4];
open DATEI, ">$uploaddir$Datei[1]";
binmode DATEI;
print DATEI $Datei[4];
close DATEI;
print "Location: $url\n\n";
====cut====
Vielleicht könnte Frank oder ein anderer perl-profi die size-abfrage abbauen?
Das script ist nämlich seeehr nützlich, finde ich.
lg,
Robert
hi!
#!C:/Programme/Perl/bin/perl.exe
Das hat unter Windows überhaupt keine Auswirkung. Man kann also einfach #!/usr/bin/perl stehenlassen, damit es unter Windows und unter Unix funktioniert.
open DATEI, ">$uploaddir$Datei[1]";
binmode DATEI;
length $Datei[4] < $maxsize || { print "Location: fehler.html\n\n"; die; }
print DATEI $Datei[4];
close DATEI;
Obiges müsste eigentlich funktionieren. Ansonsten vielleicht so:
if (length $Datei[4] < $maxsize)
{
open DATEI, ">$uploaddir$Datei[1]";
binmode DATEI;
print DATEI $Datei[4];
close DATEI;
print "Location: $url\n\n";
} else {
print "Location: fehler.html\n\n";
}
bye, Frank!