MAX_FILE_SIZE beim Dateiupload mit PHP

Beschämt stelle ich fest, dass ich jahrelang das hidden-Feld MAX_FILE_SIZE mit angegeben habe, wenn ich ein input type=”file” benutzt habe, obwohl es überhaupt keinen Sinn hat.

Es stammt aus dem Beispielcode für Uploads in der PHP-Doku und hat von dort aus seinen Weg in viele Tutorials gefunden. Die Doku macht Andeutungen, dies könnte den Browser veranlassen, die Größe vor Beginn des Uploads zu prüfen.

This form element should always be used as it saves users the trouble of waiting for a
big file being transferred only to find that it was too large and the transfer failed.

Tatsächlich handelt es sich aber um eine Farce. Alles, was dieses Feld bewirkt, ist, dass PHP den fertig entgegengenommenen Upload vor Abarbeitung des Scripts wieder löscht und im $_FILES-Array error auf 2 setzt.

Kein Browser führt deswegen eine Prüfung der Größe durch und sollte jemals in HTML eine solche Möglichkeit eingefügt werden, wird es ein Attribut des input-Tags werden und nicht so etwas abwegiges wie “das letzte input[type=hidden][name=MAX_FILE_SIZE] vor dem Upload-Feld”.

Ein Bugreport, dass dieser Unsinn aus der Dokumentation verschwinden soll, wurde abgelehnt.