Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP] Upload wielu plików jednocześnie
bahh
post
Post #1





Grupa: Zarejestrowani
Postów: 261
Pomógł: 2
Dołączył: 13.05.2012

Ostrzeżenie: (0%)
-----


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. }

Go to the top of the page
+Quote Post
artur_dziocha
post
Post #2





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

Ostrzeżenie: (0%)
-----


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

nie powinno być?
count($_FILES['plik']);
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




@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
Go to the top of the page
+Quote Post
bahh
post
Post #4





Grupa: Zarejestrowani
Postów: 261
Pomógł: 2
Dołączył: 13.05.2012

Ostrzeżenie: (0%)
-----


Wie ktoś więc czemu nie widzi utworzonych inputów z javascripta?
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bahh
post
Post #6





Grupa: Zarejestrowani
Postów: 261
Pomógł: 2
Dołączył: 13.05.2012

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To zobacz jeszcze co dokladnie idzie w files

print_r($_FILES);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bahh
post
Post #8





Grupa: Zarejestrowani
Postów: 261
Pomógł: 2
Dołączył: 13.05.2012

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 06:03