Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Upload, ale masowy
Forum PHP.pl > Forum > Przedszkole
in5ane
Witam, jak przerobić ten kody by można było masowo dodawać np. 5 plików?

Z góry dziękuję za pomoc smile.gif

  1. <?php
  2. if (isset($_FILES['Plik']))
  3. {
  4. preg_match("'(.*).(.*)$'i", $_FILES['Plik']['name'], $ext);
  5. if (!empty($ext[2]))
  6. {
  7. $exts=strtolower($ext[2]);
  8. if ($exts == "gif" || $exts == "jpg" || $exts == "png")
  9. {
  10. $new_name = date(dmy_His);
  11. $kr = ".";
  12. if (move_uploaded_file($_FILES['Plik']['tmp_name'],'./fotki/'.''.$new_name.''.''.$kr.''.''.$exts.''))
  13. {
  14.  echo('Plik został przesłany prawidłowo.');
  15.  }
  16.  else
  17.  {
  18.  switch($_FILES['Plik']['error'])
  19. {
  20. case 1: echo('Przesyłany plik jest większy niż zezwala konfiguracja serwera.');break;
  21. case 2: echo('Przesyłany plik jest większy niż zezwala formularz.');break;
  22. case 3: echo('Przesłano tylko część pliku.');break;
  23. case 4: echo('Plik nie został przesłany');break;
  24. }
  25.  }
  26. }
  27. else
  28. {
  29. echo('Przesyłany plik nie jest plikiem graficznym');
  30. }
  31. }
  32. }
  33. ?>
  34.  
  35. <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
  36. <input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
  37. <input type="file" name="Plik"><input type="submit" value="Wyslij" />
  38. </form>
crash
  1. <?php
  2.  
  3. if (isset($_FILES['Plik']))
  4. {
  5.  foreach( $_FILES['Plik'] as $plik )
  6.  {
  7. preg_match("'(.*).(.*)$'i", $plik['name'], $ext);
  8. if (!empty($ext[2]))
  9. {
  10. $exts=strtolower($ext[2]);
  11. if ($exts == "gif" || $exts == "jpg" || $exts == "png")
  12. {
  13. $new_name = date(dmy_His);
  14. $kr = ".";
  15. if (move_uploaded_file($plik['tmp_name'],'./fotki/'.''.$new_name.''.''.$kr.''.''.$exts.''))
  16. {
  17.  echo('Plik został przesłany prawidłowo.');
  18.  }
  19.  else
  20.  {
  21.  switch($plik['error'])
  22. {
  23. case 1: echo('Przesyłany plik jest większy niż zezwala konfiguracja serwera.');break;
  24. case 2: echo('Przesyłany plik jest większy niż zezwala formularz.');break;
  25. case 3: echo('Przesłano tylko część pliku.');break;
  26. case 4: echo('Plik nie został przesłany');break;
  27. }
  28.  }
  29. }
  30. else
  31. {
  32.  echo('Przesyłany plik nie jest plikiem graficznym');
  33. }
  34. }
  35.  }
  36. }
  37. ?>
  38.  
  39. <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
  40. <input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
  41. <input type="file" name="Plik[]"><br/>
  42. <input type="file" name="Plik[]"><br/>
  43. <input type="file" name="Plik[]"><br/>
  44. <input type="file" name="Plik[]"><br/>
  45. <input type="file" name="Plik[]"><br/>
  46. <input type="submit" value="Wyslij" />
  47. </form>
in5ane
nie zadzialalo.

poprostu naciskam wyslij i nie wysyla. skrypt tak jakby stoi w miejscu.
Misio311
Potwierdzam, nie działa sad.gif
Cienki1980
Tak nie działa z dwóch powodów:
1. Nie działa wyrażenie regularne - nie wiem jak poprawić bo w wyrażeniach zawsze byłem noga biggrin.gif
2. Pętla jest źle skonstruowana. Aby dowiedzieć się jak poprawnie stworzyć pętle do obsługi tego uploada wystarczy wyświetlić tablice $_FILES

  1. <?php
  2. echo "<pre>";print_r($_FILES["Plik"]);echo "</pre>";
  3. ?>


Po tym wszystko powinno być jasne, jak zbudować pętlę.
Kicok
Wyrażenie regularne nie działa, bo nie ma znaku ucieczki przed kropką (więc oznacza ona dowolny znak).

Do odczytywania rozszerzenia pliku można też użyć: pathinfo" title="Zobacz w manualu PHP" target="_manual
Misio311
Plik formularz.html

  1. <form action="#" method="POST" enctype="multipart/form-data">
  2. Plik: <input type="file" name="file[]"><br>
  3. Plik-2: <input type="file" name="file[]"><br>
  4. Plik-3: <input type="file" name="file[]"><br>
  5. <input type="submit" value="Wyślij">
  6. </form>
  7. </body>
  8. </html>


Plik upload.php

  1. <?
  2. $katalog = "galeria";
  3. $dokad = $katalog."/"; 
  4. while (list ($kt) = each ($_FILES['file']['tmp_name']))
  5.  {
  6.  
  7. if (move_uploaded_file($_FILES['file']['tmp_name'][$kt], $dokad . $_FILES['file']['name'][$kt])) {
  8. print "Wysłano<br>";
  9. } else {
  10. print "Nie wysłano<br>";
  11. }
  12.  
  13. }
  14. ?>


smile.gif Pozdrawiam
in5ane
a chcialbym zeby nazwa byla tak tworzona
  1. <?php
  2. srand((double)microtime()*1000000);
  3. $nazwa = md5(uniqid(rand()));
  4. ?>


mozna to tak zmienic?
i zabezpieczyc na rozszezenia.

Kod
Warning: Variable passed to each() is not an array or object in C:\AppServ\www\upload\upload.php on line 16


to jest linijka z whilem ale takto uploaduje.
Misio311
  1. <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
  2. Zdjęcie 1
  3. <input type="file" name="Plik[]"><br>
  4. Zdjęcie 2
  5. <input type="file" name="Plik[]"><br>
  6. Zdjęcie 3
  7. <input type="file" name="Plik[]"><br>
  8. Zdjęcie 4
  9. <input type="file" name="Plik[]"><br>
  10. Zdjęcie 5
  11. <input type="file" name="Plik[]"><br>
  12. Zdjęcie 6
  13. <input type="file" name="Plik[]"></p>
  14. <br>
  15. <input type="submit" value="Wyslij" />


  1. <?php
  2. $katalog = "podania";
  3. if (isset($_FILES['Plik'])) {
  4.  $cnt=count($_FILES["Plik"]["name"]);
  5.  for($i=0;$i<$cnt;$i++) 
  6. {
  7. if($_FILES["Plik"]["name"][$i]!='' && $_FILES["Plik"]["size"][$i]>0) {
  8. $exts=strtolower(substr($_FILES["Plik"]["name"][$i],-3));
  9. if ($exts == "gif" || $exts == "jpg" || $exts == "png"){
  10. srand((double)microtime()*1000000);
  11. $kr = ".";
  12. $nazwa = md5(uniqid(rand()));
  13. if (move_uploaded_file($_FILES["Plik"]["tmp_name"][$i],"$katalog/".''.$nazwa.''.''.$kr.''.''.$exts.'')) 
  14. {
  15.  print "Wysłano<br>";
  16. } else {
  17. print "Nie wysłano<br>";
  18. }
  19.  } else {
  20.  echo('Przesyłany plik nie jest plikiem graficznym.<br>'); } 
  21. } } } 
  22.  
  23. ?>
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.