Zobrazení průběhu uploadu

Školení, která pořádám

Při nahrávání velkých souborů na server pomocí formuláře by bylo šikovné uživateli zobrazovat průběh stahování dat. PHP tuto funkci bohužel nepodporuje, přestože patch existuje už dlouhou dobu a přestože je dokonce zařazen do oficiálního adresáře patchů. Pohled do týdenních sumářů vývojářské konference je poměrně smutný – přestože možné nevýhody byly vyvráceny, do oficiální distribuce se kód nakonec nedostal – do PHP 4.3 se to už nestihlo, v PHP 5.0 se na to zapomnělo a v PHP 5.1 se k tomu nikdo nedostal. Slibné rozšíření postparser zůstalo ve fázi návrhu bez jediné vydané verze.

Konec vzdychání, po aplikaci patche a povolení přibaleného rozšíření upload_progress_meter lze průběh stahování zobrazovat např. tímto kódem:

<?php
$progress = upload_progress_meter_get_info($_GET["idf"]);
if ($progress["bytes_uploaded"] < $progress["bytes_total"]) {
    echo '<meta http-equiv="Refresh" content="1; url=' . htmlspecialchars("$_SERVER[PHP_SELF]?$_SERVER[QUERY_STRING]") . '" />';
}
echo "Staženo: $progress[bytes_uploaded] / $progress[bytes_total] B\n";
?>
Jakub Vrána, Řešení problému, 2.12.2005, diskuse: 10 (nové: 0)

Diskuse

Lukoko:

Ve spojení s AJAXem by to mohlo vypadat opravdu dobre. Skoda, ze se na to musi patchovat PHP.

mito:

Mate pravdu nakolko preloadovanie stranky moze byt v mnohych pripadoch neziaduje.

Kalda:

Už jsem viděl řešení pomocí AJAXu, zatím jsem ho však nezkoušel:
http://bluga.net/projects/uploadProgressMeter/

Zdrojové kódy na:
http://websvn.bluga.net/wsvn/HTML_AJAX/UploadProgressMeter/

ATom:

Nejde to řešit jinak, čistě na straně JS?

ikona spaze:

Nedavno po me bylo pozadovano neco podobnyho, patchovat PHP se mi nezdalo jako dobrej napad, tak jsem vyuzil http://www.raditha.com/php/progress.php tedy kombinaci PHP s Perlem (ten jsem prohnal pres CGI).

Tom:

Pokud někoho zaujme toto:
http://pdoru.from.ro/upload-progress-meter/
a chtěl by to provozovat na PHP vyšší než 5.0.3 tak narazí na problém. Původní patch jsem si však opravil a bězí mě i na verzi PHP 5.2.4. S úspěchem to provozuji na několika serverech.
Upravený patch můžu zaslat.

Darosh:

Můžeš mi prosím poslat upravený zdrojáky na partyk@quick.cz

Díky

kodik:

Ahoj mohl bys mi to poslat ? prosiiim

ikona Stefan:

Prosim si opravene zdrojaky... je to mozne prevadzkovat aj nvo windowse?
dakujem
Stefan, servis@detva.biz

Jan Kuchař:

Dobrý den,
nevíte někdo jak patchovat PHP na Windows?
Díííky ;)

Diskuse je zrušena z důvodu spamu.

avatar © 2005-2024 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.