Erkennung von Datei-upload-Größe auf der client-Seite?
Ich bin mit PHP für Datei-uploads. In der PHP-Handbuch es zeigt ein Beispiel mit einem MAX_FILE_SIZE
verstecktes Feld, sagte, dass es erkennt auf der client-Seite (also der browser), ob die Datei zu groß ist oder nicht.
Ich habe einfach versucht, das Beispiel in Firefox, Chrome und IE und es funktioniert nicht. Die Datei wird immer hochgeladen, auch wenn es weit größer als das ausgeblendete Feld.
Übrigens, wenn die Datei größer ist als MAX_FILE_SIZE
dann ruft move_uploaded_file
funktioniert nicht, so scheint es, die variable wirkt sich auf server-Seite, aber nicht auf client-Seite.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auf MAX_FILE_SIZE
Lesen:
...In http://pk.php.net/manual/en/features.file-upload.post-method.php und gleichwertigen stellen in anderen Formaten, heißt es
der Browser den Wert von MAX_FILE_SIZE Feld in form
Konto.
Diese Informationen wiederholt an anderer Stelle im web und in Büchern, aber
scheint stammen aus der PHP-Dokumentation (es nicht angezeigt
Bezug auf die anderen server-side Technologien).
Es gibt nichts in der HTML, HTTP oder Verwandte specs angeben
dass dies der Fall ist (insbesondere RFC 1867 eingeführt, die Datei
uploads in HTML nicht, es zu erwähnen, so ist es nicht sogar ein Fall von einem Schlamassel
das war bereits im ersten RFC und dann gelöscht wurde), noch gibt es
Einblick in den Zusammenhang mit den HTML-Spezifikationen (es gibt nichts zu geben
Beziehung zwischen bestimmten versteckten Eingang und die Datei-Eingabe).
Die nur Aussagen über hidden-fields, die ich finden konnte einer von Ihnen war
Warnungen in den überlegungen zur Sicherheit von Abschnitten gegen user-agents
stützend eine Datei-bezogene Operationen auf etwas erwähnt, in einer versteckten
Feld.
Keine Browser erscheinen, führen Sie dies als eine "Erweiterung". Ja da
gibt es möglicherweise andere mögliche Bedeutungen für ein hidden-Feld mit
die Namen in eine Anwendung, Handhabung mehrere Datei-uploads, es hätte
als design-Fehler alle haben.
Ich behaupte, dass es keinen solchen Mechanismus in den mainstream-Browsern (wenn überhaupt
bei allen) und in der Tat sollte nicht sein. Verweis sollte gelöscht werden, aus
Dokumentation.
Ich würde weiter vorschlagen, dass, da diese Idee verbreitet hat aus diesem
Dokumentation anderswo, dass ein Hinweis darüber nicht arbeiten sollte
Hinzugefügt.
Wenn ein Mechanismus erforderlich ist oder gewünscht schneller Umgang mit diesem
Sortieren der Datei-handling-Problem dann Bedarf es PHP-Funktionalität zu ermöglichen
zum abfangen von Datenströmen, die hochgeladen wird, bevor die Anforderung abgeschlossen, die
völlig anders wäre, wie diese Dokumentation empfehlen es
sollten Sie auch behandelt werden, auch wenn es wahr war...
den code unten kommen, von swfUpload php-Umsetzung:
you need to verify the file uploaded was less than MAX_FILE_SIZE using PHP
Nein, tun Sie nicht. Einfach loszuwerden, diese nutzlose Feldpost_max_size
, aber es erfordert browser gesendete Anfrage-header mitContent-Length
, und von den modernen Browsern nur Opera scheint zu sein, sendet diesen header.upload_max_filesize
EinstellungDiese wahrscheinlich funktioniert nur auf Firefox 3.6 ist für heute:
Sehen http://www.w3.org/TR/FileAPI/.
Soweit ich weiß, gibt es keine einfache, cross-browser-Lösung, dies zu erreichen. Die einzige funktionierende Lösungen sind Flash-oder Java-basiert, da diese Technologien kann auf Dateisysteme zugreifen und get file info.
Beispiel-scripts: Uploader YUI2, FancyUpload, SWFUpload
Wenn Sie versteckte Feld MAX_FILE_SIZE richtig, die Datei hochladen, wird nur aufhören, wenn die hochgeladene Größe erreicht den angegebenen Wert. Und so erspart dem Anwender die Mühe, zu warten, für eine große Datei übertragen werden.
Sie haben zu prüfen, ob der Datei-upload beendet ist, in der server-Seite mithilfe der Fehler code generiert.