Rolf: Dateigröße vor Upload ermitteln

Beitrag lesen

Aber was mich an dem Upload per CGI interessieren würde, wäre eine Möglichkeit, VOR dem Upload die Dateigröße ermitteln zu können. Ist es bisher nicht so, daß ich den ganzen Datenstrom erfassen muß, um dann zu sagen: Nee, das darfst Du nicht. Deine Datei ist zu groß...
Und dann per unlink(datei) wieder alles zu löschen?

Hallo, im Arschiev hab ich da leider auch nichts brauchbares gefunden. Zumindest gibt es eine Möglichkeit, den Datenstrom _während_ des Uploads zu überwachen und wenns zuviel wird die Übertragung abzubrechen. Dazu kannst Du den Rückgabewer der read()-Funktion verwenden. Wie Cheatah schon sagte, passiert das alles schon serverseitig!

Hier nun mein Beispiel (ohne Gewaehr); Rolf

sub upload{
# $file ist der String aus dem FileInput
# Sonderzeichen rausfiltern bevors weitergeht!
$size = 0;
my $sizemax = $maxgr * 1024; # Upload begrenzen
my $xread = 0;
my $x = 0;
my $upfile = "Name der Datei auf dem Server";
# Speichern der Datei auf dem Server
open (UPDAT,">$updir/$upfile") &no_upfile;
binmode UPDAT;
while ($xread = read($file, $buffer, 1024)) {
  $size += $xread;
  if($size > $sizemax){
   print "<h2>Die hochzuladende Datei überschreitet die zulässige Größe von $sizemax KiloByte.</h2>Der Prozess wird abgebrochen";
   close UPDAT;
   unlink("$updir/$upfile"); # Fragmente löschen
   die;
  }
  print UPDAT $buffer;
}      
close UPDAT;
}