Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Postęp umieszczania pliku.
Forum PHP.pl > Forum > PHP
Balon93
Ściągłem taki uploader Simple Upload PHP Script.
I che w nim zrobić tak aby był postęp umieszczania plików pokazany w procentach.
I może ile jeszcze pozostało czasu winksmiley.jpg (nie koniecznie)
Oto kod:
  1. <?php
  2.  
  3. $site_name = $_SERVER['HTTP_HOST'];
  4. $url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
  5. $url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
  6.  
  7. $upload_dir = "upload_files/";
  8. $upload_url = $url_dir."/upload_files/";
  9. $message ="";
  10.  
  11. //create upload_files directory if not exist
  12. //If it does not work, create on your own and change permission.
  13. if (!is_dir("upload_files")) {
  14. die ("upload_files directory doesn't exist");
  15. }
  16.  
  17. if ($_FILES['userfile']) {
  18. $message = do_upload($upload_dir, $upload_url);
  19. }
  20. else {
  21. $message = "";
  22. }
  23.  
  24. print $message;
  25.  
  26. function do_upload($upload_dir, $upload_url) {
  27.  
  28. $temp_name = $_FILES['userfile']['tmp_name'];
  29. $file_name = $_FILES['userfile']['name']; 
  30. $file_type = $_FILES['userfile']['type']; 
  31. $file_size = $_FILES['userfile']['size']; 
  32. $result = $_FILES['userfile']['error'];
  33. $file_url = $upload_url.$file_name;
  34. $file_path = $upload_dir.$file_name;
  35.  
  36. //File Name Check
  37. if ( $file_name =="") { 
  38. $message = "";
  39. return $message;
  40. }
  41. //File Size Check
  42. else if ( $file_size > 5242880) {
  43. $message = "Plik nie został umieszczony na serwerze. Przekroczył limit 5MB.";
  44. return $message;
  45. }
  46. //File Type Check
  47. else if ( $file_type == "text/plain" ) {
  48. $message = "Przepraszam, nie możesz załadować pliku." ;
  49. return $message;
  50. }
  51.  
  52. $result = move_uploaded_file($temp_name, $file_path);
  53. $message = ($result)?"Adres pliku: <a href=$file_url>$file_url</a>" :
  54. "Somthing is wrong with uploading a file.";
  55.  
  56. return $message;
  57. }
  58. ?>
  59. <form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post">
  60. <p>Podaj adres pliku:
  61. <input type="file" id="userfile" name="userfile">
  62. <input type="submit" name="Umieść!" value="Upload">
  63. </p>
  64. <h5>Uplauder ten stworzyłem dla własnego użytku. <br />
  65. Licz się z tym, że jeżeli umieszczasz tutaj plik bez mojej zgody możesz go stracić.</h5> 
  66. </p>
  67. </form>



-------------------------
poprawiłem tytuł
~Cienki1980
RLLAMAS
hmm z mojej wiedzy wynika że nie jest to możliwe, ponieważ obrubka pliku przez PHP nastepuje dopiero po jego pełnym wysłaniu na serwer.

Może udało by się to Java Scriptem ale tu pojawia się kolejny problem JS moze sprawdzić ale jeszcze przed rozpoczeciem wysłania.

Wiec pozostaje ci chyba tylko JAVA i być może Flash gdzie ztego co kojaze mozezesz sprawdzic ile danych wysłałeś, podobnie jak ma to miejsce przy ładowaniu tych elementów gdzie sprawdzasz gdzie na podstawie pobranych z serwera danych możesz sprawdzić postęp ładowania.

Ale czy da sie to w JAVIE lub FLASHU zrobić dla wysłaych plików reki uciąć sobie nie dam bo nie wiem.
JAVY nie znam a we FLASH sie az tak nie zagłębiałem.
marcini82
Takie rzeczy to mozna zrobic chyba tylko ze specjalnie spatchowana wersja php. Ale jak znajdziesz jakies ciekawe rozwiazanie to napisz...
PiratNowegoPokolenia
Cytat
tylko ze specjalnie spatchowana wersja php

że jak :?: widziałeś wogóle takie coś :?:

A co do tematu to musisz skorzystać z JavaScript
Jak się na nim znasz to spróbuj skorzystać ze skryptów które są użyte na rapidshare.de albo innym serwisie hostującym pliki
bendi
Cytat(RLLAMAS @ 19.03.2007, 08:20:05 ) *
Ale czy da sie to w JAVIE lub FLASHU zrobić dla wysłaych plików reki uciąć sobie nie dam bo nie wiem.

da się biggrin.gif
marcini82
Cytat
że jak? widziałeś wogóle takie coś ?

Do starszych wersji php mozna zastosowac patcha: http://pdoru.from.ro/upload-progress-meter/ ,
a od wersji 5.2 jest dostepne rozszerzenie PECL http://pecl.php.net/package/uploadprogress ,
dzieki ktoremu mozna na biezaco sprawdzac postep uploadu (tylko ktory hosting to oferuje??).
Przyklady uzycia mozna znalezc w komentarzach do manuala:
http://us3.php.net/features.file-upload

Sa jeszcze rozwiazania mieszane, ktore wykorzystuja np. Perla:
http://www.raditha.com/php/progress.php

Sam JavaScript bez wspolpracy ze strony php lub innej technologii server-side nic tu nie da.
kriqs
prosze http://www.element-it.com/DemoMultiPOW.aspx
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.