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, 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-2025 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.