Autor Zpráva
visionic
Profil *
Dobrý den,

projel jsem snad dost návodů a našel jsem i dost hotových řešení, které jsou od samého začátku až dokonce. Mě jde pouze o ten progress bar, který se mi nedařil vytáhnout z již hotových řešení. Mám php kompletní script na upload a ten se mi moc měnit nechce, jsem na něj zvyklý a mám v něm spoustu funkcí. Chtěl bych tedy udělat jen vylepšení o progress bar. Týká se to single uploadu obrázků a chci k němu navíc zobrazit průběh.

Pokud to tak je, tak bych poteboval asi jen JS, které mi do nějaké proměnné bude házet procento statusu, které poté převedu do elementu. Klidně si nechám poradit, ale moc se mi nechce překopávat kvůli progresu celé mé řešení.

Děkuji všem za jakoukoliv pomoc.


Stránky jsou HTML5 a je možné zakomponovat i element progress.
visionic
Profil *
Našel jsem částečné řešení, už vidím procentuální upload, ale po uploadu se neodešle formulář, nebo odešle, ale jako formou ajax na script a to nechci.

$(function() {

    var bar = $('.bar');
    var percent = $('.percent');
    var status = $('#status');

    $('form').ajaxForm({
        beforeSend: function() {
            var percentVal = '0%';
            bar.width(percentVal);
            percent.html(percentVal);
        },
        uploadProgress: function(event, position, total, percentComplete) {
            var percentVal = percentComplete + '%';
            bar.width(percentVal);
            percent.html(percentVal);
        },
        complete: function() {

        }
    });
});

if ($_POST[add]==".....") { ........ }

<form action="" method="post" enctype="multipart/form-data">
  <img style="display: none" id="obrazek">
  <input class="files" type="File" name="obrázek" onchange="zobrazit(this)" accept="image/*">
  <input class="button" name="add" type="submit" value="Odeslat">
</form> 

Chci to jen prostě odeslat se zachováním toho statusu. Nechci uploadovat ajaxem a nechci pouzit script externe. Je to vubec mozne?
Keeehi
Profil
visionic:
nebo odešle, ale jako formou ajax na script a to nechci
Jinou možnost moc nemáš. Jedině secure.php.net/manual/en/session.upload-progress.php
visionic
Profil *
Zkoušel jsem to, ale nějak mi to nefunguje. Server mi běží na 5.6 . Takže to sám nechápu. Zkoušel jsem dva návody a ani jeden mi nešel.
Keeehi
Profil
Ono totiž záleží i na konfiguraci serveru. Přečti si warning a komentáře.
visionic
Profil *
Vše se zdá být v pořádku. Ještě pak mrknu na to konfiguraci, nevíš přibližně co by tam mohlo zlobit v tom nastavení?

1. návod: codeseekah.com/2012/03/09/file-upload-progress-in-php-5-4
2. návod: oliversmith.io/technology/2011/12/04/php-5-4-file-upload-progress-and.html5-progress-bars
3. návod: www.sitepoint.com/tracking-upload-progress-with-php-and-javascript
Davex
Profil
visionic:
Vše se zdá být v pořádku.
První dva návody v pořádku nejsou, protože tam jsou různé chyby v JavaScriptu. Podle toho třetího návodu by to mohlo za vhodných okolností fungovat, i když ten kód také není ideální.
visionic
Profil *
A nemáš nějakou lepší radu? Variantu?
visionic
Profil *
Tak nakonec jsem to vyřešil dle návodu č. 3. V názvu souboru jsem měl chybu a strašně se za to stydím :(.

Davex:
Teď už je to hodně do detailu, jsem s tím velice spokojený, jen bych to nahrávání chtěl plynulejší. Nyní se procenta aktualizujou cca po 1s, ale chtěl bych třeba 0.05s. Ale to už bych chtěl asi moc že?
Keeehi
Profil
visionic:
To je tím, co je nastavené v setTimeout. V návodu je nastavená vteřina (1000 milisekund). Jde to samozřejmě zkrátit třeba i na těch požadovaných 50 milisekund, jen si uvědom, že se pokaždé pošle nový požadavek na server. A už i posílání požadavku každou sekundu je slušná zátěž.
Davex
Profil
Keeehi:
Jde to samozřejmě zkrátit
Máš pravdu, ale údaj na serveru se aktualizuje jen jednou za vteřinu, takže se bude zbytečně často číst stejná hodnota.
Amunak
Profil
Pokud to má být plynulé, řešil bych to pomocí nějakých animací/přechodů/interpolace hodnoty, rozhodně ne větším počtem "snímků", zbytečně by to posílalo požadavky kvůli něčemu co má minimální hodnotu pro uživatele.
visionic
Profil *
Dobrý den,

abych zbytečně neotvíral další vlákno, tak to napíšu sem.

Narazil jsem na problém s php progress barem. Pokud uploaduju první soubor (při prvním spuštění prohlížeče), tak mi to hodi automaticky rovnou 100%, druhy soubor uz funguje jak ma. Napadlo me, že chyba bude v samotnem sessions, ze neni definovana a prvni upload ji setne a tim padem druhej soubor uz bere správně. Napadá někoho nějaké řešení?

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0