Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript][HTML] Postęp Uploadu
Forum PHP.pl > Forum > Przedszkole
MateuszS
Witam, szukam prostego upload progress bara do mojego hostingu. Oczywiście na necie znalazłem tego tony, ale niestety są to giga skrypty. Ja potrzebuje czegoś baardzo małego, pokazujący tylko prędkość (tekst) i procentowy lub paskowy postęp uploadu. Może być też info ile pozostało do końca. Mam już zrobiony własny form i input z file, własny skrypt uploadu, trzeba mi tylko ten postęp. Wiem że musi Ajaxem przesłać plik, a potem jakoś moim skryptem dalej. Pozdrawiam

PS albo chociaz jakie funkcje odpowiadaja za pobranie transferu itp
bastard13
można to zrobić tak:
  1. //zamiast
  2. <input type="submit" value="TXT" />
  3. //wstaw
  4. <input type="button" onclick="wyslijAjax('nazwa')" value="TXT" />

i dodaj
  1. <script type="text/javascript">
  2. <!--
  3. function wyslijAjax(nazwa)
  4. { var r=null;
  5. if(window.XMLHttpRequest) r=new XMLHttpRequest(); //jeśli przeglądarka!=IE
  6. else if(window.ActiveXObject) r=new ActiveXObject("Microsoft.XMLHTTP"); //jeśli to IE
  7. if(r)
  8. { r.open("GET",nazwa); //przesyła zapytanie za pomocą GET do pliku 'nazwa'
  9. r.onreadystatechange=function()
  10. { //w poniższych if'ach możesz definiować co ma się dziać w trakcie kolejnych kroków wysyłania
  11. if(r.readyState==0) ; //obiekt został utworzony, ale żądanie nie zostało zdefiniowane
  12. if(r.readyState==1) ; //żądanie zdefiniowane, ale nie wysłane
  13. if(r.readyState==2) ; //zapytanie przesłane
  14. if(r.readyState==3) ; //odpowiedź wczytywana
  15. if(r.readyState==4) ; //przesłane dane są dostępne
  16. }
  17. r.send(null)
  18. }
  19. else ;//przeglądarka nie obsluguje ajaxa
  20. }

Wydaje mi się, że to najprostszy sposób. Mogłem gdzieś się pomylić, bo dawno nie miałem styczności z AJAX'em.
Jakby coś nie działało to tutaj masz dobrą stronę
http://www.tizag.com/ajaxTutorial/ajaxxmlhttprequest.php
MateuszS
nom ale tu chyba jest samo przesyłanie, bez czegoś w stylu paska postępu.
bastard13
Ale możesz zrobić coś takiego
  1. if(r.readyState==0) document.getElementById('postep')='0%';
  2. if(r.readyState==1) document.getElementById('postep')='25%';
  3. if(r.readyState==2) document.getElementById('postep')='50%';
  4. if(r.readyState==3) document.getElementById('postep')='75%';
  5. if(r.readyState==4) document.getElementById('postep')='Przesyłanie zakończone!';

oczywiście możesz zmienić document.getElementById('postep')='0%'; na np. wyswietl_postep(n) i zrobić funkcje, która w zależności od n wyświetlać będzie pasek postępu.
MateuszS
ok a jest mozliwosc potem uzycia mojego kodu PHP do przemieszczenia pliku do innego folderu i wyslanie zapytania do bazy bez dwukrotnego przeladowywania strony? Naciskam na tego buttona i wykona sie przesylanie i moj kod. ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.