Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP] Upload wielu plików jednocześnie
Forum PHP.pl > Forum > Przedszkole
bahh
Mam taki skrypt, że możemy wgrywać kilka plików naraz. Działa to na zasadzie, że w JS mam kod, gdzie po przyciśnięciu "dodaj kolejny plik" pojawia się nowy input taki jak ten:
  1. <input type="file" name="plik[]" class="upload" />

a potem przesyłamy formularz. Problem pojawia się w kodzie PHP, widzi on tylko jeden plik, mimo że w tablicy powinno być np. 3 pliki - pętla wykonuje się tylko raz. Gdzie popełniam błąd?

Tutaj HTML:
  1. <script type="text/javascript">
  2. function dodaj_element(kontener){
  3. var znacznik = document.createElement(\'input\');
  4. znacznik.setAttribute(\'type\', \'file\');
  5. znacznik.setAttribute(\'name\', \'plik[]\');
  6. znacznik.className = \'upload\';
  7. var kontener = document.getElementById(kontener);
  8. kontener.appendChild(znacznik);
  9. }
  10. <form method="post" action="pliczek.php" enctype="multipart/form-data">
  11. <div id="pliki">
  12. <input type="file" name="plik[]" class="upload" />
  13. </div>
  14. <input type="button" value="Załącz kolejny plik" onclick="dodaj_element('pliki');" />
  15. <input type="submit" value="DODAJ" />
  16. </form>

A tutaj PHP:
  1. for ($i=0; $i<count($_FILES['plik']['size']); $i++)
  2. {
  3. if (is_uploaded_file($_FILES['plik']['tmp_name'][$i])) {
  4. if ($_FILES['plik']['size'][$i] > $max_size_file)
  5. $error = 'Rozmiar przesyłanego załącznika został przekroczony. Maksymalny dopuszczalny rozmiar załącznika wynosi '.$max_size_file/(1024*1024).' MB';
  6. elseif ($_FILES['plik']['type'][$i] == "text/plain")
  7. $error = 'Niedopuszczalny format załącznika';
  8. //TUTAJ JAKAS TAM CZESC KODU
  9. }
  10. }
  11. }

artur_dziocha
jak ma Ci to policzyć?
count($_FILES['plik']['size']);

nie powinno być?
count($_FILES['plik']);
phpion
@artur_dziocha:
Widziałeś kiedyś tablicę $_FILES dla przesyłanych kilku plików na raz? Jeśli nie to sobie zobacz, a się zdziwisz smile.gif
bahh
Wie ktoś więc czemu nie widzi utworzonych inputów z javascripta?
nospor
Czemu robisz tak:
znacznik.setAttribute(\'name\', \'plik[]\');
?

Przeciez tak byc powinno:
znacznik.setAttribute('name', 'plik[]');

Analogicznie reszta.

Pozatym patrzyles czy nowoutworzone pola napewno generują sie poprawnie? Mozesz to zrobic w FireBug
bahh
Znaki \ są dodawane z tego powodu, że wyświetlam javascript za pomocą echo ''; - zapomniałem usunąć te znaki w tym przypadku zamieszczajac to tutaj

sprawdziłem FireBugiem poprawność, wszystko ok
nospor
To zobacz jeszcze co dokladnie idzie w files

print_r($_FILES);
bahh
Już mam błąd, dałem tak:
  1. <div>
  2. <div>
  3. <form>
  4. </div>
  5. </div>
  6. <div>
  7. <div>
  8. </div>
  9. </div>
  10. <div>
  11. <div>
  12. </form>
  13. </div>
  14. </div>


a form powinno być przed wszystkimi divami, zauważyłem to dobiero przy FireBugu
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.