dateigröße vor dem Postbefehl abfragen / Uploadbegrenzung
Jones
- programmiertechnik
Hallo,
ich hab eine Art Registrierungsform gebaut mit einem Fileupload(Script). Funzt auch super, ich hab jetzt nur das Problem, dass ich gerne den Upload begrenzen will. Geht mit php ja jetzt nicht so schwer, dass ist aber nicht was ich will, denn mit php greife ich ja dann auf den Temp-Ordner des Servers zu. Ich möchte aber verhindern, das der User, wenn er eine 20GB Datei anhängt erstmal ein Jahr wartet, bis die Datei auf dem Server angekommen ist.
Also im Klartext, wie verhindere ich das Dateien über der Größe (variable x) beim Posten des Form’s gleich an den Servercache geschickt werden. Mit „ maxlength=’x’ “ gebt es ja leider nicht mehr. Außerdem würde ich das gerne so machen, dass ich noch einen alert oder eine Zeile im Browser ausgeben kann, in der dann steht: „Tut uns leid aber die Datei konnte nicht hochgeladen werden, weil sie zu groß ist“
Hallo,
ich hab das immer so gemacht, dass ich an der Stelle, wo die Datei geschrieben wird, die Bytes aufsummiere und da wo das zuviel wird, eine entsprechende FM ausgebe.
Hier ein Bsp. in PERL:
while ($bytesread = read($filename, $buffer, 1024)) {
$sum += $bytesread;
if( $sum > $max){
close OUTFILE;
unlink "$dir/$remote_filename";
err("Das Upload Limit ist erreicht","Abbruch...");
}
print OUTFILE $buffer;
}
close OUTFILE;
Viele Grüße,
Horst
Ich grüsse den Cosmos,
Also im Klartext, wie verhindere ich das Dateien über der Größe (variable x) beim Posten des Form’s gleich an den Servercache
Dazu gibt es in der php.ini eine passende EInstellung max_upload_size (oder so ähnlich), die meist auf 2MB gesetzt ist.
Ansonsten kannst du es maximal _wärend_ des Uploads feststellen, das ein Grenzwert überschritten wird, aber nicht mit PHP, soweit ich weiss.
_Vor_ dem Upload wäre das maximal mit einem Applet oder ActiveX möglich, wovon ich abraten würde.
Möge das "Self" mit euch sein
Ich glaub MAX_FILE_SIZE macht das ...
<form method="post" action="index.html" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="80000">
<input type="file" size="-1" class="inputimage" name="file">
<input type="image" name="button_saveimage_2" src="/imga/save.png" border="0" width="22" height="20" title="">
</form>
Geht zumindest bei multipart/form-data
Gruss
Hallo,
Ich glaub MAX_FILE_SIZE macht das ...
<form method="post" action="index.html" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="80000">
</form>
Geht zumindest bei multipart/form-data
nee, bestimmt nicht. Das erzeugt nur einen Eintrag MAX_FILE_SIZE=80000 in den POST-Parametern, der sich z.B. in PHP in $_POST['MAX_FILE_SIZE'] niederschlägt. Eine Wirkung hat das aber nicht.
Tatsächlich ist es prinzipbedingt nicht möglich, die Upload-Größe im Script zu begrenzen, das mit dem Formular aufgerufen wird. Denn dieses Script wird auf dem Server erst gestartet, wenn die POST-Daten komplett übertragen sind. Es kann also bestenfalls die Annahme der Daten verweigern, *nachdem* die übertragen wurden.
Folglich kann der User so viel Daten hochladen, wie der Apache entgegennimmt.
Eine wie auch immer geartete Begrenzung durch ein HTML-Attribut setzt voraus, dass der Client das auch beachtet, was keinesfalls vorausgesetzt werden kann.
So long,
Martin