Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z uploadem plików
Forum PHP.pl > Forum > Przedszkole
slwy
Przykład zaczerpnięty z manuala PHP

Oto plik z formularzem:
  1. <form action="skrypt_upload.php" method="post" enctype="multipart/form-data">
  2. <input type="file" name="pictures[]" /></br>
  3. <input type="file" name="pictures[]" /></br>
  4. <input type="file" name="pictures[]" /></br>
  5. <input type="submit" value="Send" />
  6. </form>


a to skrypt php

  1. <?php
  2. echo '<pre>';print_r($_FILES["pictures"]);
  3. echo '</pre>';
  4. foreach ($_FILES["pictures"]["error"] as $key => $error) {
  5.    if ($error == UPLOAD_ERR_OK) {
  6.        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
  7.        $name = $_FILES["pictures"]["name"][$key];
  8.        move_uploaded_file($tmp_name, "upload/$name");
  9.    }
  10. }
  11. ?>


Problem w tym, że z 3 plików wrzuconych do formularza raz do folderu upload wgrał się tylko jeden plik, następnym razem żaden, a teraz dostaję tylko błędy:

Notice: Undefined index: pictures in C:\Inetpub\www\skrypt_upload.php on line 5

Warning: Invalid argument supplied for foreach() in C:\Inetpub\www\skrypt_upload.php on line 5


zrestartowałem serwer (Wamp 2.0) php i nie pomogło, nadal dostaję błędy. Może powinienem zmienić ustawienia serwera? brak pomysłów, proszę o pomoc...
EarthCitizen
$_FILES["pictures"] to nie jest tablica, dlatego dostajesz:
Kod
Warning:  Invalid argument supplied for foreach() in C:\Inetpub\www\skrypt_upload.php on line 5


Wklej co dostajesz z print_r($_FILES)
slwy
wynik: Array ( ) - pusta
...
EarthCitizen
A Ty odpaliłeś ten skrypt klikając submit czy wpisując adres skryptu z przeglądarki... bo staram się doprowadzić do takiej sytuacji jak u Ciebie i coś mi nie wychodzi...
slwy
submit

tym razem array ma taka postac:
Kod
Array
(
     [pictures] => Array
         (
             [name] => Array
                 (
                     [0] => dn2.jpg
                     [1] => herb.jpg
                     [2] => adexpert.jpg
                 )

             [type] => Array
                 (
                     [0] => image/jpeg
                     [1] => image/jpeg
                     [2] => image/jpeg
                 )

             [tmp_name] => Array
                 (
                     [0] => C:\wamp\tmp\php72.tmp
                     [1] => C:\wamp\tmp\php73.tmp
                     [2] => C:\wamp\tmp\php74.tmp
                 )

             [error] => Array
                 (
                     [0] => 0
                     [1] => 0
                     [2] => 0
                 )

             [size] => Array
                 (
                     [0] => 33149
                     [1] => 1991
                     [2] => 41310
                 )

         )

)


ale takie 3 błędy otrzymuję (wszystkie takie same, więc wklejam jeden zestaw):
Warning: move_uploaded_file(data/dn2.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\Inetpub\www\skrypt_upload.php on line 7

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\wamp\tmp\php72.tmp' to 'data/dn2.jpg' in C:\Inetpub\www\skrypt_upload.php on line 7
Pilsener
A możesz nam powiedzieć, w jakim celu parsujesz tablicę $_FILES['pictures']['error'] - masz czarno na białym strukturę przesyłanych danych, masz parsować tablicę "pictures".

1. Policz, ile zostało przesłanych plików - w tym wypadku 3, użyj count
2. Robisz pętle for obracającą się 3 razy - umiesz zrobić taką?
3. Obrabiasz w pętli tablicę "pictures" sprawdzając elementy takie jak type, size, error:
  1. <?php
  2. echo $_FILES['pictures']['name'][$i]; //obrabiasz name
  3. echo $_FILES['pictures']['size'][$i] //obrabiasz size
  4. //sprawdzasz, czy są jakieś błędy w error
  5. //zapisujesz etc.
  6. ?>
- gdzie $i to oczywiście licznik pętli, który będzie nabijał od 1 do 3 i przeleci po kolei wszystkie pliki.

Pokombinuj.
slwy
spoko, dzięki smile.gif programować umiem, te pętle itd. to mam opanowane, miałem problem tylko z uploadem plików z formularza, nie działa mi to po prostu za każdym razem, czasem tablica $_FILES jest pusta...

a w jakim celu parsuję - nie wiem, to przykład zaczerpnięty, jak pisałem, z manuala PHP. nawet on nie działał, więc zapytałem tutaj.
Hawk
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.