Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: odczyt danych z formularza wsadzonych w tablicę
Forum PHP.pl > Forum > PHP
bogdan1984
Tak jak w temacie. Mam z tym problem.

Otóż mam dwa pliki: index.php
  1. <?php
  2. echo "<form enctype=\"multipart/form-data\" action=\"upload.php\" method=\"POST\">";
  3. echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"102400\">";
  4. echo "Plik do wysłania: <input type=\"file\" name=\"plik_zdjecie[]\" value=\"\"> <br>";
  5. echo "Plik do wysłania: <input type=\"file\" name=\"plik_zdjecie[]\" value=\"\"> <br>";
  6. echo "Plik do wysłania: <input type=\"file\" name=\"plik_zdjecie[]\" value=\"\"> <br>";
  7. echo "Plik do wysłania: <input type=\"file\" name=\"plik_zdjecie[]\" value=\"\"> <br>";
  8. echo "Plik do wysłania: <input type=\"file\" name=\"plik_zdjecie[]\" value=\"\"> <br>";
  9. echo "<br>";
  10. echo "<input type=\"submit\" value=\"Wyślij\">";
  11. echo "</form>";
  12. ?>


i plik: upload.php
  1. <?php
  2. $plik = $_FILES['plik_zdjecie'];
  3.  
  4. if ($plik['type'] == 'image/pjpeg')
  5. {
  6.    $x = getimagesize($plik['tmp_name']);
  7.  
  8.    if(!is_array($x) or $x[0] < 2)
  9.    {
  10.        die('Upload plików nie powiódł się!!!<br>Wygląda na to, że uploadowane pliki nie są plikami graficznymi.');
  11.    }
  12.  
  13. }
  14. else
  15. {
  16.    echo 'Niedozwolony rodzaj plików!!!<br>Sprawdź czy uploadowane pliki na pewno są plikami typu: jpg.';
  17. }
  18. ?>


Chodzi o to, że nie wiem gdzie jest błąd jeśli chodzi o plik "upload.php".
Wogóle nie odczytuje mi danych z tablicy. Już praktykowałem nie raz z formularzem do uploadowania plików, ale dopiero pierwszy raz mam doczynienia z uploadem, który dane przekazuje do tablicy.
Pomoże mi ktoś?
artur_dziocha
$pliki = $_POST['plik_zdjecie'];
bogdan1984
Niestety nadal nie działa.
_olo_1984
no dobra, tylko co nie działa ? Bo ja tam nie widzę z kodu, który napisałeś że ma on uploadować pliki na serwer. Zobacz coś takiego w pliku upload.php:

  1. <?php
  2. print_r($_FILES['plik_zdjecie']['name']);
  3. echo '<br />';
  4. print_r($_FILES['plik_zdjecie']['error']);
  5. echo '<br />';
  6. print_r($_FILES['plik_zdjecie']['tmp_name']);
  7. ?>

przecież to są tablice, to raz.

Dwa to: is_uploaded_file i move_uploaded_file
artur_dziocha
var_dump($_POST);
i bedziesz miał wyświetlone wszystko co przesyłasz postem
_olo_1984
Cytat(artur_dziocha @ 21.02.2009, 10:31:56 ) *
var_dump($_POST);
i bedziesz miał wyświetlone wszystko co przesyłasz postem


ta, będzie miał tylko MAX_FILE_SIZE, a jemu pewnie o pliki chodzi, czyli tablcię $_FILES
bogdan1984
przerobiłem plik upload.php całkowicie, ale nadal mi nie działa.

Oto on:
  1. <?php
  2. $file = $_FILES['plik_zdjecie'];
  3.  
  4. if ( is_uploaded_file( $file['tmp_name'] ) )
  5. {
  6.   foreach ($file['type'] as $key => $type)
  7.   {
  8.      if ($type == "image/jpeg")
  9.      {
  10.            if ($file["size"] <= 102400)
  11.            {
  12.               $filename = $file['name'];
  13.               $directory = 'pliki';        //katalog w którym chcemy umieścić plik
  14.               while (file_exists($directory."/".$filename))
  15.               {
  16.                  $filename = $i.$file['name'];
  17.                  $i++;
  18.               }
  19.               move_uploaded_file( $file['tmp_name'], $directory."/".$filename) or die("Problem z uploadem pliku");
  20.               echo "Poprawnie zauploadowano plik";
  21.            }
  22.            else
  23.            {
  24.               echo "Blad 3 stopnia";
  25.            }
  26.      }
  27.      else
  28.      {
  29.         echo "Blad 2 stopnia";
  30.      }
  31.   }
  32. }
  33. else
  34. {
  35.   echo "Blad 1 stopnia";
  36. }
  37. ?>


Wyskakuje mi komunikat: Blad 1 stopnia.
Pliku index.php nie zmieniałem. Już nie wiem co tu jest nie tak. Próbuje z różnych stron to ugryźć ale idzie kiepsko. Z uploadem jednego pliku nie problem ale gdy potrzebuje zrobić skrypt, który zrobi to masowo to już gorzej.

Może zrobi mi ktoś gotowy skrypt.
Potrzebuje, aby:
- była możliwość wrzucania tylko plików do 100 kb,
- można było wrzucać tylko pliki typu: jpg,
- można było wrzucić max. 30 plików za jednym razem.
kefirek
Cos w ten desen bedzie. Powinno dzialac
  1. <?php
  2. $typy = array(".jpg",".jpeg");
  3. for ($lp=0; $lp<count($_FILES['plik_zdjecie']['tmp_name']); $lp++) {
  4. if (is_uploaded_file($_FILES['plik_zdjecie']['tmp_name'][$lp])) {
  5. $typ = strtolower(strrchr($_FILES['plik_zdjecie']['name'][$lp],"."));
  6.  
  7. $info = @getimagesize($_FILES['plik_zdjecie']['tmp_name']);
  8.  
  9. if (!in_array($typ, $typy)) {
  10. echo 'Plik o nazwie '.$_FILES['plik_zdjecie']['name'][$lp].'ma nie dozwolne rozszerzenie';  
  11. } elseif ($info[0] > 102400 || $info[1] > 102400) {
  12. echo 'Plik o nazwie '.$_FILES['plik_zdjecie']['name'][$lp].'ma za duzy rozmiar';  
  13. } else {
  14. if (move_uploaded_file($_FILES['plik_zdjecie']['tmp_name'][$lp], 'pliki/'.$_FILES['plik_zdjecie']['name'][$lp]))
  15. { echo 'Plik wyslany poprawnie'; } else { echo 'Blad plik nie wyslany'; }
  16.  
  17. }
  18.  
  19. }
  20. }
  21. ?>
bogdan1984
Działa i w dodatku tak jak chciałem.
Dzięki.
Teraz będę mógł przystąpić do dalszych działań, a ten kod przyczyni się do powstania poważnego panelu administracyjnego dla Galerii na mojej stronie.
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.