Datei-Upload-Größe auf der Client-Seite erkennen?

8

Ich verwende PHP für Datei-Uploads. Im PHP-Handbuch wird ein Beispiel mit einem MAX_FILE_SIZE hidden gezeigt Geben Sie an, dass auf der Clientseite (dh dem Browser) erkannt wird, ob die Datei zu groß ist oder nicht.

Ich habe gerade das Beispiel in Firefox, Chrome und IE ausprobiert und es funktioniert nicht. Die Datei wird immer hochgeladen, auch wenn sie viel größer als das angegebene versteckte Feld ist.

Wenn übrigens die Datei größer als MAX_FILE_SIZE ist, dann funktioniert der Aufruf von move_uploaded_file nicht, daher scheint die Variable einen Server-seitigen Effekt zu haben, aber keinen client-seitigen.

    
DisgruntledGoat 29.05.2010, 11:22
quelle

4 Antworten

10

Ein MAX_FILE_SIZE

Lesen Sie dies:

... Zu Ссылка und ähnlichen Orten in anderen Formaten , es ist angegeben dass Browser den Wert eines Formularfeldes MAX_FILE_SIZE annehmen Konto.

Diese Information wird an anderer Stelle im Internet und in Büchern wiederholt, aber scheint aus der PHP - Dokumentation zu stammen (sie erscheint nicht in ) Begriffe anderer serverseitiger Technologien ).

In den HTML-, HTTP- oder verwandten Spezifikationen ist nichts angegeben das ist der Fall (insbesondere RFC 1867, die Datei eingeführt Hochladen in HTML erwähnt es nicht , also ist es nicht einmal ein Fall von Kludis das wurde im ersten RFC erwähnt und dann fallen gelassen) macht es auch nicht Sinn im Kontext der HTML-Spezifikationen (es gibt nichts, um darauf hinzuweisen Beziehung zwischen dieser bestimmten versteckten Eingabe und der Dateieingabe). Die einzigen Aussagen über versteckte Felder, die ich in jedem von ihnen finden konnte, waren Warnungen in den Sicherheitsüberlegungen gegen Benutzeragenten alle dateibezogenen Operationen auf etwas basieren, das in einem versteckten Bereich erwähnt wird Feld.

Keine Browser scheinen dies als "Erweiterung" auszuführen . In Anbetracht dessen Es gibt möglicherweise andere mögliche Bedeutungen für ein verstecktes Feld mit Dieser Name in einer Anwendung, die mehrere Datei-Uploads behandelt, hätte es als ein Konstruktionsfehler angesehen werden, den jeder gemacht hat.

Ich behaupte, dass es in Mainstream-Browsern keinen solchen Mechanismus gibt (falls vorhanden) überhaupt) und sollte es auch nicht sein. Der Verweis darauf sollte von fallen gelassen werden Dokumentation.

Ich würde das weiter empfehlen, da sich diese Idee daraus entwickelt hat Dokumentation an anderer Stelle, dass eine Notiz darüber nicht funktionieren sollte hinzugefügt.

Wenn ein Mechanismus benötigt oder gewünscht wird, um dies schneller zu handhaben Art der Dateibehandlung Problem dann benötigt es Funktionalität, um PHP zu ermöglichen Streams abzufangen, die vor dem Abschluss der Anfrage hochgeladen werden wäre ganz anders, als diese Dokumentation es vorschlägt sollte behandelt werden, selbst wenn es wahr wäre ...

  

Der folgende Code stammt von swfUpload php implementation:

%Vor%     
Luca Filosofi 29.05.2010, 11:52
quelle
6

Das funktioniert wahrscheinlich nur unter Firefox 3.6:

%Vor%

Siehe Ссылка .

    
Matthew 29.05.2010 18:09
quelle
3

Soweit ich weiß, gibt es dafür keine einfache, browserübergreifende Lösung. Die einzigen funktionierenden Lösungen sind Flash oder Java, da diese Technologien auf das Dateisystem zugreifen und Dateiinformationen abrufen können.

Beispielskripte: YUI2-Uploader , FancyUpload , SWFUpload

    
dev-null-dweller 29.05.2010 12:03
quelle
1

Wenn Sie das versteckte Feld MAX_FILE_SIZE ordnungsgemäß verwenden, wird das Hochladen der Datei einfach gestoppt, wenn die hochgeladene Größe den angegebenen Wert erreicht. Und damit erspart sich der Benutzer das Warten auf die Übertragung einer großen Datei. Sie müssen überprüfen, ob der Dateiupload auf der Serverseite gestoppt wurde, indem Sie den Fehlercode verwenden generiert.

%Vor%     
SCC 07.02.2014 13:18
quelle

Tags und Links