Ich bin mir sicher, dass das schon einmal gefragt wurde, aber da ich keine gute Antwort zu finden scheint, frage ich ... schon wieder. :)
Gibt es eine Möglichkeit, mit nur einer Mischung aus HTML, JavaScript / AJAX und PHP den tatsächlichen Fortschritt eines Datei-Uploads zu melden?
Als Antwort auf irgendjemanden, der SWFUpload oder ähnliches vorschlägt:
Ich weiß alles darüber. Ich war auf dieser Straße. Ich suche nach einer 100% reinen Lösung (und ja, ich weiß, dass ich es wahrscheinlich nicht bekommen werde).Wenn Sie in Ihrem PHP PECL-Pakete hinzufügen können, gibt es das Paket uploadprogress .
Der einfachste Weg wäre allerdings, swfupload zu verwenden.
Das Überwachen Ihrer Dateiuploads mit PHP / Javascript erfordert die PECL-Erweiterung:
Ein gutes Beispiel für den Code, der benötigt wird, um den Fortschritt für Ihre Benutzer anzuzeigen, ist:
Wenn ich mich nicht irre, benutzt es JQuery um mit PHP zu kommunizieren.
Du könntest es auch selbst schreiben. Es ist nicht so komplex.
Fügen Sie ein verborgenes Element als erstes Element des Upload-Formulars mit dem Namen UPLOAD_IDENTIFIER
hinzu.
Abfrage eines PHP-Skripts, das uploadprogress_get_info( UPLOAD_IDENTIFIER )
aufruft
Es gibt ein Array zurück, das folgendes enthält:
Lassen Sie PHP die Informationen in Javascript zurückgeben und Sie sollten viele Informationen haben. Abhängig von der Zielgruppe werden Sie wahrscheinlich nicht alle verfügbaren Informationen verwenden.
Wenn Sie APC installiert haben (und an diesem Punkt sollten Sie wirklich; es wird Standard in PHP6 sein), es verfügt über eine Option zum Aktivieren der Upload-Verfolgung. Es gibt einige Dokumentationen , und Rasmus hat ein Codebeispiel , das YUI verwendet.
Gibt es eine Möglichkeit, mit nur einer Mischung aus HTML, JavaScript / AJAX und PHP den tatsächlichen Fortschritt eines Datei-Uploads zu melden?
Ich kenne keine Möglichkeit, einfache HTML-Dateiupdates (multipart / form-data) in Webserver-geladenem PHP zu überwachen.
Sie müssen Zugriff auf den Fortschritt des multipart / form-data Parsers haben, wenn die Daten eintreffen, aber das sieht unmöglich aus, da die Zugriffe auf den HTTP-Anfragetext von PHP aus möglich sind ($HTTP_RAW_POST_DATA und php://input ) sind dokumentiert als "nicht verfügbar mit enctype=" multipart / form-data "".
Sie können einen scriptgestützten Datei-Upload in Firefox durchführen, indem Sie die Dateiliste eines Upload-Feldes verwenden, um den Inhalt einer Datei zu erfassen in geteilter oder nicht mehrteiliger Form einzureichen. Immer noch eine Menge Arbeit zu parsen.
(Sie könnten sogar ein PHP-Skript als Standalone-Server auf einem anderen Port ausführen, nur um Datei-Uploads mit Ihrem eigenen HTTP-Handling-Code zu erhalten. Aber das ist eine Menge Arbeit für relativ wenig Gewinn.)
Ich würde dir fünf FancyUpload empfehlen, es ist eine wirklich coole Lösung für den Fortschrittsbalken und es ist nicht unbedingt notwendig php. Checkout auch die anderen Tools auf digitarald.de
Prost
IMHO, das ist das Problem, das Webbrowser lösen sollten. Wir haben eine Fortschrittsanzeige für Downloads, also warum nicht auch für Uploads?
Sehen Sie sich dies zum Beispiel an:
Ссылка