Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Upload kilku plików
Robert1985
post 14.10.2009, 21:04:13
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 7
Dołączył: 5.08.2009
Skąd: Tychy

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


Kurcze niby wszystko gra ,ale na serwer przesyła tylko jedno zdjęcie ,w formularzu mam 3 pola file o atrybucie plik[] czyli wszystko powinno grać sad.gif ,a przesyła tylko jedno zdjęcie dlaczego??
  1. if(isset($_POST['submit'])){
  2. switch($_POST['typ']){
  3. case 'obraz':
  4. for($i=0;$i<count($_FILES['plik']['name']);$i++){
  5. $kod_bledu = $_FILES['plik']['error'][$i];
  6. $temp = $_FILES['plik']['tmp_name'][$i];
  7. $nazwa = $_FILES['plik']['name'][$i];
  8. $rozmiar = $_FILES['plik']['size'][$i];
  9. $mime = $_FILES['plik']['type'][$i];
  10. $ext = substr($nazwa,strrpos($nazwa,'.')+1);
  11. $rozszerz = array('JPEG','JPG','PJPEG','PNG','GIF','jpeg','jpg','pjpeg','png','gif');
  12. $typy_mime = array('image/jpeg','image/png','image/gif','image/pjpeg');
  13. @$wielkosc = getimagesize($_FILES['plik']['tmp_name'][$i]);
  14.  
  15. if($kod_bledu==0){
  16. if(is_uploaded_file($temp)){
  17. if(!file_exists('wyslane/'.$nazwa)){
  18. if($rozmiar<=3000000){
  19. if(in_array($ext,$rozszerz)){
  20. if(in_array($mime,$typy_mime)){
  21. if(is_array($wielkosc) && $wielkosc[0]>5 && $wielkosc[1]>5){
  22. $lokalizacja = 'wyslane/'.sha1(time()).'.'.$ext;
  23. if(move_uploaded_file($temp,$lokalizacja)){
  24. chmod($lokalizacja,0600);
  25. echo 'Plik nr: '.($i+1) .' został wysłany na serwer dzięki!<br/>';
  26. }else {echo "Przeniesienie niemożliwe!<br/>";}
  27. }else {echo "Plik nie jest obrazkiem!<br/>";}
  28. }else {echo "Niewłaściwy typ mime<br/>";}
  29. }else {echo "Niewłaściwe rozszerzenie pliku!<br/>";}
  30. }else {echo "Wielkość pliku przekracza ustawienia skryptu!<br/>";}
  31. }else{echo "Taki plik już istnieje!<br/>";}
  32. }else{echo "Plik jest plikiem lokalnym!<br/>";}
  33. }else {
  34. switch($kod_bledu){
  35. case 1:echo "Wielkość pliku przekracza ustawienia serwerw!<br/>";break;
  36. case 2:echo "Wielkość pliku przekracza ustawienia skryptu!<br/>";break;
  37. case 3:echo "Plik został wysłany częściowo!<br/>";break;
  38. case 4:echo "Plik nie został wysłany!<br/>";break;
  39. }
  40. }
  41. }
  42. echo '<a href=\"/../index.php \">Strona Główna</a><br/>';
  43. break;


Acha rzeby było śmieszniej otrzymuję komunikaty typu: Plik nr1 został wyslany i Plik nr.2 został wysłany ,ale jest tylko jeden :/

Ten post edytował Robert1985 14.10.2009, 21:08:40


--------------------
"Istnieją dwa sposoby projektowania oprogramowania. Można napisać je tak prosto, że w oczywisty sposób nie będzie w nim niedoskonałości; można też uczynić je tak skomplikowanym ,że nie będzie w nim żadnych oczywistych niedociągnięć.Pierwsza metoda jest znacznie trudniejsza." C.A.R Hoare
Go to the top of the page
+Quote Post
nospor
post 14.10.2009, 21:11:30
Post #2





Grupa: Moderatorzy
Postów: 36 456
Pomógł: 6296
Dołączył: 27.12.2004




przeciez wszystkie kopiujesz pod tę samą lokalizację:
$lokalizacja = 'wyslane/'.sha1(time()).'.'.$ext;
smile.gif


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

"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
jmail
post 14.10.2009, 21:12:40
Post #3





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

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


zamień to

  1.  
  2. $lokalizacja = 'wyslane/'.sha1(time()).'.'.$ext
  3.  


na to

  1.  
  2. $lokalizacja = 'wyslane/'$i.'_'.sha1(time()).'.'.$ext
  3.  


time zwraca Ci tylko co do sekundy czas i jak skrypt wykonuje się poniżej jednej sekundy wtedy masz taką samą nazwę pliku - dodaj licznik jako ograniczenie
Go to the top of the page
+Quote Post
Robert1985
post 14.10.2009, 21:14:52
Post #4





Grupa: Zarejestrowani
Postów: 84
Pomógł: 7
Dołączył: 5.08.2009
Skąd: Tychy

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


Dzięki wam nie wpadlem na to ,że znacznik czasu może mieć na to wpływ ,rzeczywiście chodzi o czas wykonania. smile.gif, ale czy to oznacza ,że ograniczenie file_exists nie dziala?? sad.gif

Ten post edytował Robert1985 14.10.2009, 21:17:03


--------------------
"Istnieją dwa sposoby projektowania oprogramowania. Można napisać je tak prosto, że w oczywisty sposób nie będzie w nim niedoskonałości; można też uczynić je tak skomplikowanym ,że nie będzie w nim żadnych oczywistych niedociągnięć.Pierwsza metoda jest znacznie trudniejsza." C.A.R Hoare
Go to the top of the page
+Quote Post
jmail
post 14.10.2009, 21:24:45
Post #5





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

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


załóżmy że wysyłasz plik nazwa.jpg

to według Twojego kodu sprawdzasz czy istnieje nazwa.jpg a następnie wrzucasz go na time().jpg więc jak ma działać winksmiley.jpg
Go to the top of the page
+Quote Post
Robert1985
post 14.10.2009, 21:36:43
Post #6





Grupa: Zarejestrowani
Postów: 84
Pomógł: 7
Dołączył: 5.08.2009
Skąd: Tychy

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


Tak już rozumiem ,czyli zalożenie działa ,bo miało sprawdzać dla nazwy jaką podaje User, jeszcze raz dzięki.


--------------------
"Istnieją dwa sposoby projektowania oprogramowania. Można napisać je tak prosto, że w oczywisty sposób nie będzie w nim niedoskonałości; można też uczynić je tak skomplikowanym ,że nie będzie w nim żadnych oczywistych niedociągnięć.Pierwsza metoda jest znacznie trudniejsza." C.A.R Hoare
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 Wersja Lo-Fi Aktualny czas: 26.04.2024 - 11:38