Zobrazení průběhu uploadu

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, on-line

Diskuse

Lukoko:

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

mito:

Mate pravdu nakolko preloadovanie stranky moze byt v mnohych pripadoch neziaduje.
6.12.2005 14:08:32

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/
13.12.2005 02:30:18

ATom:

Nejde to řešit jinak, čistě na straně JS?
12.12.2005 19:55:36

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).
13.2.2006 15:34:26

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.
19.9.2007 03:23:43

Darosh:

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

Díky
12.10.2007 10:07:36

kodik:

Ahoj mohl bys mi to poslat ? prosiiim
12.3.2008 17:24:10

ikona Stefan:

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

Jan Kuchař:

Dobrý den,
nevíte někdo jak patchovat PHP na Windows?
Díííky ;)
17.12.2007 14:48:39
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.