Frage

Kennt jemand von Methoden, um eine Datei-Upload-Fortschrittsbalken in PHP zu erstellen? Ich habe oft gehört, dass es unmöglich ist.

Ich habe eine Idee, aber nicht sicher, ob es funktionieren würde: eine normale Datei-Upload, sondern zu einem Iframe einreichen. Wenn dieser vorgelegt wird, speichern Sie die Datei-Informationen (Größe und temporären Speicherort) in der Sitzung. Zur gleichen Zeit beginnt einen AJAX-Aufruf zu jedem sagt sie 10 Sekunden, um die Größe der Datei zu überprüfen, im Vergleich zur Größe in der Sitzung gespeichert. Dies würde die Größe auf die AJAX zurückkehrt und dann würde ein Fortschrittsbalken sein dimensioniert und vielleicht den Benutzer die hochgeladene Größe angezeigt werden.

Die Gedanken?

War es hilfreich?

Lösung

Sie können versuchen, YUI oder Prototype oder JQuery

Andere Tipps

Sie sind ziemlich viel herausgefunden, wie es zu tun. Das Hauptproblem ist, dass Sie in der Regel keinen Zugriff auf die Größe der hochgeladenen Datei, bis es Upload fertig ist.

Es gibt Abhilfen für diese: Aktivieren des APC, Sie auf diese Informationen zugreifen, wenn Sie ein Feld namens „APC_UPLOAD_PROGRESS“ und die Verwendung apc_fetch () einen Cache-Eintrags mit dem Status zum Abrufen.

Es gibt auch ein Plugin namens upload aber es ist nicht sehr gut dokumentiert und funktioniert nicht auf Windows (zuletzt geprüft ich sowieso).

Eine Alternative ist Flash zu verwenden, es zu tun. Siehe Skripte wie FancyUpload .

Vor APC kam hatte ich ein CGI-Skript in C zu schreiben, die Informationen in eine Textdatei geschrieben. APC scheint wie ein viel besserer Weg, es jetzt aber zu tun.

Hope, das hilft.

Bisher ist die gängigste Weg, dies zu tun, ist SWFUpload: http://www.swfupload.org/

Es ist jedoch ist möglich mit reinem PHP, nur sehr schwierig und sehr experimentell. Ich werde sehen, ob ich den Link finden.

Edit: Nach Aussagen auf php.net, ab 5.2 gibt es einen Haken Fortschritt zu handhaben hochladen. http://us.php.net/features.file-upload#71564

Weitere Erläuterung:

Rasmus' Beispiel:

Von 5.4 PHP ist es in Session Erweiterung: http: // PHP. net // manual / pl / session.upload-progress.php

In der reinen PHP sind Sie richtig: es ist nicht möglich

.

Wenn Sie diese AJAX-ify, dann könnten Sie tun, was Sie beschreiben. Die einzigen Fortschritte Meter die ich je gesehen habe, sind in Javascript oder Flash, obwohl ich denke, Silverlight könnte es tun auch.

"Alte Schule", sondern eine PHP + Perl Technik: http://www.raditha.com/php/progress.php

Meiner Meinung nach ist die beste / einfachste Lösung ist einen kleinen Flash-Widget zu erstellen, die von einer ‚Hochladen‘ Taste besteht und einen Fortschrittsbalken. Flash gibt Ihnen sehr detailliertes Feedback darüber, wie viele Daten bisher hochgeladen, und Sie können einen schönen Fortschrittsbalken auf dieser Grundlage bauen. Erfordert keine ineffiziente Abfrage des Servers, und in der Tat erfordert keine Änderungen an alle auf dem Server-Code. Google für ‚Flash-Uploader‘ und Sie werden viele Menschen haben bereits geschrieben, diese Widgets und sind glücklich, zu verkaufen, sie zu Ihnen für einen Dollar finden.

würde ich empfehlen, unter SWFUpload zu erreichen, was Sie wollen. Es ist ziemlich flexibel und unterstützt von Dateien Warteschlangen, so dass Sie könnte sogar Multi-Datei-Uploads verarbeiten.

Sie wollen auf jeden Fall mit digitgerald des FancyUpload gehen. Es ist Mootools & swfuplaod basiert, und es Sport eine schöne Warteschlange mit statusses, Fortschritt, eta usw. Es ist wirklich die slickest Methode, die ich für das Hochladen von Dateien gesehen habe. Für meinen persönlichen Gebrauch Fall ive es der Kunde wählen 1.2 gb von PDF-Dateien lassen verwendet und sie laden. Neueren erhalten umbenannt und versioniert automatisch, gleichen, werden übersprungen, etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top