Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kilka plików przy jednym uploadzie
Forum PHP.pl > Forum > PHP
pikornecki
czy jest możliwość zaznaczenia kilku plików w files i wysłania na serwer tak jak to jest np n facebooku?
kilas88
tak

np
http://www.uploadify.com/
Kshyhoo
Bez wodotrysków możesz tak:
  1. <input type="file" multiple name="ufile[]" size="50" />

Funkcję tę posiadają tylko najnowsze przeglądarki, obsługujące HTML5 typu Gecko 1.9.2 (dostępne m. in. w FireFox 3.6) oraz nowsze wersje przeglądarek opartych na silniku WebKit obsługujące atrybut multiple elementu <input> z atrybutem type="file". Atrybut ten pozwala do jednego inputa wstawić wiele plików.
pikornecki
dobra to teraz pytanie jak z
  1. name="ufile[]"
odczytać
bo w chwili obecnej mam takie coś:
  1. $plik = $HTTP_POST_FILES['user_file']['name'];
  2. $plik = $HTTP_POST_FILES['user_file']['tmp_name'];

i jak zliczyć ile tych plików ktoś załadował bo chodzi mi konkretnie o to, że jak już ktoś załaduje te pliki to później muszę pozmieniać nazwy tych plików.
Kshyhoo
To mój Panie jest tablica i tak trzeba ją odczytać smile.gif Np.:
  1. if (!is_dir($upload_dir)) {
  2. die ('<div class="message" style="left: 380px; top: 100px;"><span class="pl">Błąd! Katalog docelowy '.$upload_dir.' nie istnieje!</span></div>');
  3. }
  4. for ($i=0; $i<sizeof($_FILES['ufile']['size']); $i++) {
  5. $top = $i*35+130;
  6. if ($_FILES['ufile']['size'][$i] != 0) {
  7. $uploaded = $upload_dir.$_FILES['ufile']['name'][$i];
  8.  
  9. // tu sprawdzenie rozszerzeń, nazwy, i co tam sobie życzysz...
  10. if (in_array($extension, $allowedExtensions)) {
  11.  
  12. if (is_uploaded_file($_FILES['ufile']['tmp_name'][$i])) {
  13. if (file_exists($upload_dir.$_FILES['ufile']['name'][$i])) { // czy plik już istnieje
  14. echo '<div class="message" style="left:400px; top: '.$top.'px;"><span class="pl">Błąd! Plik ['.$i.'] już istnieje!</span></div>';
  15. } else {
  16. if ($_FILES['ufile']['size'][$i] > 2*1024*1024) { // ograniczenie wielkości
  17. echo '<div class="message" style="left:390px; top: '.$top.'px;"><span class="pl">Błąd! Plik numer ['.$i.'] jest za duży!</span></div>';
  18. } elseif (move_uploaded_file($_FILES['ufile']['tmp_name'][$i],$uploaded)) {
  19. chmod($uploaded, 0755);
  20. echo '<div class="message" style="left:330px; top: '.$top.'px;"><span class="key">Operacja wysyłania pliku ['.$i.'] przebiegła pomyślnie.</span></div>';
  21. } else {
  22. switch($_FILES['ufile']['error']) {
  23. case 1:
  24. echo '<div class="message" style="left:300px; top: '.$top.'px;"><span class="pl">Błąd! Przesyłany plik ['.$i.'] jest większy niż zezwala konfiguracja serwera!</span></div>';
  25. break;
  26. case 2:
  27. echo '<div class="message" style="left:300px; top: '.$top.'px;"><span class="pl">Błąd! Przesyłany plik ['.$i.'] jest większy niż zezwala formularz!</span></div>';
  28. break;
  29. case 3:
  30. echo '<div class="message" style="left:300px; top: '.$top.'px;"><span class="pl">Błąd! Przesłano tylko część pliku ['.$i.']!</span></div>';
  31. break;
  32. case 4:
  33. echo '<div class="message" style="left:350px; top: '.$top.'px;"><span class="pl">Błąd! Plik ['.$i.'] nie został przesłany!</span></div>';
  34. break;
  35. } // błędy
  36. } // jeżeli niepowodzenie
  37. } // jeżeli plik juz istnieje
  38. } else {
  39. echo '<div class="message" style="left:350px; top: '.$top.'px;"><span class="pl">Błąd przy przesyłaniu danych w pliku ['.$i.']!</span></div>';
  40. } // uplowadowanie
  41. } else {
  42. echo '<div class="message" style="left:350px; top: '.$top.'px;"><span class="pl">Błąd! Niepoprawny format pliku ['.$i.']!</span></div>';
  43. } // rozszerzenia
  44. } else {
  45. echo '';
  46. }// !=0
  47. } // tablicowanie plików
  48. } // upload
pikornecki
Dzięki wielkie, a tak jeszcze z innej beczki, używam netbeansa i chcę używać kontrolek z HTML5 więc patrząc po dokumentacji wystarczy
  1. <!DOCTYPE html>
niestety pokazuje mi że nie zna takich opcji jak multiple mimo że serwer wykonuje, jednak już takiego kodu:
  1. <label>Cc: <input type=email multiple name=cc list=contacts></label>
  2. ...
  3. <datalist id="contacts">
  4. <option value="hedral@damowmow.com">
  5. <option value="pillar@example.com">
  6. <option value="astrophy@cute.example">
  7. <option value="astronomy@science.example.org">
  8. </datalist>


nie wykonuje poprawnie tak jak dokumentacja wskazuje


powinno dać listę rozwijalną a nic nie wyskakuje bo nie zna np <datalist> czy list
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.