2009-08-28 17 views
5

Podczas próby dostępu do tablicy $_FILES, PHP zwraca błąd

"Undefined index: obraz".

W moim pliku php.ini, File Uploads są włączone, i każdy użytkownik może napisać w katalogu /tmp. W formularzu HTML typem encji jest "multipart/form-data". Co ciekawe, nazwa do przesłanego pliku zostanie wydrukowana, więc uważam, że PHP faktycznie widział plik, ale ma problem z przesłaniem go. Czy ktoś może sugerować potencjalne rozwiązania tego problemu? Przy okazji, używam PHP5.

Fragmenty z PHP File

echo "Picture=" . $_POST['picture'] . "<br/>"; 
$uploadedPic = $_FILES['picture']['tmp_name']; 

HTML Form

<form action="PHPFile.php" method="post" enctype="multipart/form-data"> 

<p> Picture </p> 
<input type = "file" id="picture" name="picture"/> 

</form> 
+2

czy próbowałeś var_dumping swojego pliku $ _FILES? – n1313

+1

Czy przypadkiem używasz Javascript do serializowania formularza? – JorenB

+3

to post_max_size i upload_max_filesize w twoim php.ini ustawiony na wystarczająco dużą wartość? – Zed

Odpowiedz

6

Na co linia nie masz tego ostrzeżenia? Jeśli jest to jeden z $_POST['picture'], to jego logiczny, nie znajdziesz przesłanych danych plików w $_POST, to w $_FILES

+1

W sidenote .... będziesz chciał sprawdzić, czy $ _SERVER ['REQUEST_METHOD'] == 'POST', jeśli tylko przesyłasz plik w formularzu i nie przesyłasz żadnych innych danych – SeanJA

1
echo "Picture=" . $_POST['picture'] . "<br/>"; 

POST zmienna

$_POST['picture'] 

nie istnieje, więc tak, to da nieokreślony błąd.

0

Nie mogę komentować, więc powiem to tutaj.

MAN, to echo wyświetli nazwę pliku! To działa! Powiedział, że to działa.

Co ciekawe, basename dla przesyłanych plików wydruków więc wierzę, że PHP jest faktycznie widać plik [...]

Dobra wskazówka: spróbuj var_dump$_FILES i dodać tu jest zawartość. Możesz mieć błąd, ponieważ plik jest zbyt duży lub zawiera inne użyteczne informacje.

0

Jakiego poziomu lub raportowania błędów używasz? error_reporting(E_ALL) włączy pełne raportowanie i może dać Ci wskazówkę. Jak wcześniej opisano, wykonaj wydruk $_FILES z var_dump() lub print_r(), aby wyświetlić informacje dotyczące pliku.

-2

spróbuj dodać

<input type="hidden" name="MAX_FILE_SIZE" value="30000" /> 

przed

<input type = "file" id="picture" name="picture"/> 
0

lol, poprzedni poster powiedział, że ponowne uruchomienie ich serwer naprawił. Zrobiłem to samo iz jakiegoś powodu to działa. Nie wprowadziłem żadnych zmian w kodzie, a resetowanie IIS również nie działało. wymagało ponownego uruchomienia komputera. to około 2 godziny całkowicie stracone.

Powiązane problemy