Witam, chodzi mi o zrobienie wizualizacji (postepu) sciagania plikow. Np skrypt sprawdza ze user ma do pobrania np 12 zdjec i wyskakuje monit czsy chce je pobrac, klika Tak i teraz pliki po kolei zaczynaja sie sciagac ale jak zrobic i w czym zeby user widzial postep. Moze byc to w ten sposob ze po zakonczniu sciagania jednego pliku wyskakuje komunikat ze plik nr 1 pobrano.
W php nie bardzo chyba da sie to zrobic.
Pozdrawiam
Tak, to musisz zrobić po stronie klienta. Możesz wykorzystać JavaScript, tam jest takie funkcja, która sprawdza czy plik jest już załadowany, lub też Flash'a.
hmm... z checia bym pomogl ale jakos nie wiem o jakim pobieraniu plikow mowa, chodzi o zaladowanie obrazkow do Image() czy co ?
hmm... z checia bym pomogl ale jakos nie wiem o jakim pobieraniu plikow mowa, chodzi o zaladowanie obrazkow do Image() czy co ?
Chdzo o normalne sciaganie plikow z konta do katalogu lokalnego; i zeby widzialem gosc ze np 3 pliku juz sie sciagnely albo ile jest do konca ze cos sie dzieje.
Chdzo o normalne sciaganie plikow z konta do katalogu lokalnego; i zeby widzialem gosc ze np 3 pliku juz sie sciagnely albo ile jest do konca ze cos sie dzieje.
To jak ty te pliki chcesz ściągać? Przecież zwykła ściągałka internet explorera pokazuje postęp ściągania plików... W jaki inny sposób realizujesz to ściąganie?
To jak ty te pliki chcesz ściągać? Przecież zwykła ściągałka internet explorera pokazuje postęp ściągania plików... W jaki inny sposób realizujesz to ściąganie?
Przez ftp z poziomu php.
Przez ftp z poziomu php.
Czyli chcesz pokazać u klienta pasek postępu tego, co się dzieje na serwerze? Nie da sie :).
Nie da sie :).
nie ma rzeczy których się nie da zrobić :-P
tez uważam ze to kiepski pomysł ale cos by się wyskrobało....
pomijając sprawy całego ftp i wykonywania operacji na serwerze, największy problem to informować przeglądarkę o postępie w wykonywaniu operacji, a da się to zrobić przy pomocy osobnej ramki i JavaScript, mały przykład odnośnie tego co mam na myśli:
<?php
// wylaczamy blokade zatrzymania skryptu po 30 sekundach
set_time_limit(0);
// szykujemy 1 KB danych....
for ($i = 0; $i < 1024; $i++) $s .= '#';
// przepelniamy poczatkowy bufor danych - w niektorych browserach
// dopiero w tedy zaczyna realizowac otrzymany kod
echo '<html><body><!-- ' . $s . ' -->';
// zmuszamy serwer do wyslania danych do przegladarki
flush();
// mala pentelka zeby sprawdzic czy dziala
$i = 10;
while ($i--)
{
echo '<script>alert("' . $i . '")</script>';
flush();
sleep(3); // czekamy 3 sekundy
}
?>
Jeżeli wykonuje się alert() to można tez odwołać się do sąsiedniej ramki i cos w niej wykonać, np. przesunąć pasek postępu...
<?php
// wylaczamy blokade zatrzymania skryptu po 30 sekundach
set_time_limit(0);
// szykujemy 1 KB danych....
for ($i = 0; $i < 1024; $i++) $s .= '#';
// przepelniamy poczatkowy bufor danych - w niektorych browserach
// dopiero w tedy zaczyna realizowac otrzymany kod
echo '<html><body><!-- ' . $s . ' -->';
// zmuszamy serwer do wyslania danych do przegladarki
flush();
// mala pentelka zeby sprawdzic czy dziala
$i = 10;
while ($i--)
{
echo '<script>alert("' . $i . '")</script>';
flush();
sleep(3); // czekamy 3 sekundy
}
?>
Jeżeli wykonuje się alert() to można tez odwołać się do sąsiedniej ramki i cos w niej wykonać, np. przesunąć pasek postępu...
Alert sie wykonuje bez zadnych funkcji flush, a co maja znaczyc te znaczki # ktore sie dopisuja do zmiennej s bo nie bardzo kumam temat ?