DanielE: Progessbar beim Downlaoden von Dateien (Ajax)

Beitrag lesen

Hi Dennis,

Interessant, wie kompliziert du das geschrieben kriegst *g* Unabhängig davon solltest du noch unbedingt escapeshellarg() verwenden, weil sonst ein Angreifer eventuell beliebige Befehle auf dem Zielsystem ausführen lassen kann - so ungefähr könnte das aussehen:

$proc = "start C:\Programme\xampp\php\php.exe download.php " . escaleshellarg($_GET['download']);

Ist in Ordnung. Werde ich noch hinzufügen... ist ja net sonderlich schwierig...

Wie prüfst du jetzt eigentlich, ob der Download-Prozess beendet ist? Eine Prozessliste wie ps -A unter Linux gibt es ja unter Windows AFAIK nicht, oder?

Hmm, da kann ich nur sagen: Zauberrei...

Lässt du das rein über die Dateigröße laufen? Weil sonst könntest du dir auch überlegen noch eine Art Lockfile anzulegen und mit Spielereien wie touch() sicherstellen, dass der Download-Prozess immer noch läuft und nicht abgeschmiert ist...

... OK, keine Zauberei! Es ist eher ein wenig geraten;) Also ich mache folgendes: Ich öffne ja den Download-Prozess per popen! Die Dateigröße steigt dann ja. Per Ajax mache ich alle 4 sek. eine Abfrage, wie groß die Datei ist. Naja, eigentlich bekomme ich nur gesagt, wieviel Prozent der Datei gedownloaded bzw. geuploaded ist. Innerhalb der Serveranwendung habe ich nämlich einen Service implementiert, der mir sagt, wie groß eine Datei ist. In der Clientanwendung rufe ich diesen Service auf und noch zusätzlich filesize für die lokale Datei, die gedownloaded wird. Dann berechne ich einen Prozentwert. Aber wie weiß ich jetzt, dass die Datei vollständig gedownloaded ist? Also, wenn der Download problemlos funktioniert, bekomme ich irgendwann 100 von Server zurück, weil 100%  der Datei gedownloaded ist. Das ist ein Indikator. Ein zweiter ist eher ein vermuteter Indikator. Ich frage alle 4 sek. die Dateigröße ab. Wenn die Prozentzahl sich 5 mal nicht ändert, dann gab es einen Fehler und ich breche das ganze mit einer Fehlermeldung ab.

Funktioniert recht gut!

Gruß

Daniel

Gruß

Daniel