Alex: Fehlermeldung beim Upload von zu großen Dateien

Hallo,
das Thema wurde hier kurz angeschnitten
http://forum.de.selfhtml.org/archiv/2003/2/t38927/

aber eine Lösung habe ich nach googlen nicht gefunden, vielleicht gibts ja keine :)

Folgendes:
Es wird eine Datei mittels Formular und PHP geuppt, dabei ist diese Datei größer als alle Limits die es bei PHP so gibt.
Nun da PHP schon wärend des Uppens die größe ständig checkt bricht es einfach ab und kehrt zur vorherigen Seite zurück.

Folgerung ich kann keine Fehlermeldung schmeißen, kann man das irgendwie  ändern?

  1. Hallo!

    Du könntest das natürlich mit einer Abfrage realisieren...
    Die Lenght-Angabe im Input Tag, und die Abfrage in PHP.

    if ($datei < 500000){ //In Bytes
    echo "Sorry, die Datei ist zu groß...";
    } else {
    move_uploaded_file(etcetc);
    ...
    ...
    ...
    ...
    }

    LG maiskolben

  2. echo $begrüßung;

    Es wird eine Datei mittels Formular und PHP geuppt, dabei ist diese Datei größer als alle Limits die es bei PHP so gibt.
    Nun da PHP schon wärend des Uppens die größe ständig checkt bricht es einfach ab und kehrt zur vorherigen Seite zurück.

    Es kehrt unter Garantie nicht zur vorigen Seite zurück, weil es gar nicht weiß, was die vorige Seite gewesen ist. Es sei denn, dein Script reagiert auf den Referrer.

    Bitte beobachte und beschreibe genauer was passiert. Mach gegebenenfalls ein paar Test mit unterschiedlichen Dateigrößen. Z.B. größer als upload_max_filesize aber kleiner als post_max_size, größer als post_max_size, und das memory_limit nicht vergessen.

    Folgerung ich kann keine Fehlermeldung schmeißen, kann man das irgendwie  ändern?

    Es gibt Fehler, die kann man im Script nicht abfangen, beispielsweise Parse-Fehler. Und es gibt Prozesse, die gar nicht erreicht werden, weil schon vorher ein Fehler auftrat. Das Behandeln des File-Uploads kann nicht stattfinden, wenn die POST-Daten schon allein wegen ihrer Größe abgelehnt werden.

    Das Hochsetzen des error_reporting-Levels bringt übrigens auch keine Punkte, wenn dies im Script geschieht, der Fehler aber schon vor der Ausführung des Scripts stattfindet.

    echo "$verabschiedung $name";

    1. Es kehrt halt nicht zurück sondern dahin was im action-Attribut steht , hast schon recht ;)

      mein einziges Problem ist das PHP wärend dem Upload schon abbricht wenn was bis dahin übertragen wurde größer ist als max_filesize, und dabei wird halt kein Fehler geworfen.

      (Mein Problem ist nicht das max_filesize, oder timeout oder das der Upload überhaupt nicht funktioniert)

      die var $_POST, $_FILE in PHP existieren nicht deswegen keine Fehlerüberprüfung möglich :(

      1. echo $begrüßung;

        mein einziges Problem ist das PHP wärend dem Upload schon abbricht wenn was bis dahin übertragen wurde größer ist als max_filesize, und dabei wird halt kein Fehler geworfen.

        Das kann ich nicht nachvollziehen.
        Ist meine Testdatei größer als upload_max_filesize aber kleiner als post_max_size erhalte ich einen Eintrag in $_FILES mit dem Fehlercode UPLOAD_ERR_INI_SIZE. Ist außerdem noch MAX_FILE_SIZE im Form spezifiziert, ergibt es stattdessen UPLOAD_ERR_FORM_SIZE.
        Ist die Datei größer als post_max_size, ist $_FILES leer und eine PHP-Warnung wurde ausgegeben. Abzuschalten geht sie im Script nicht mehr. Das Unterdrücken/Ausgeben (error_reporting/display_errors) muss außerhalb des Script konfiguriert werden. Der Text dieser Warnung ist bei eingeschaltetem track_errors auch in der Variable $php_errormsg zu finden.

        echo "$verabschiedung $name";