2009-08-28 27 views
5

Al intentar acceder a la matriz $_FILES, PHP devuelve el error

"Undefined index: foto".

En mi archivo php.ini, File Uploads están activadas, y cualquier usuario puede escribir en el directorio /tmp. En el formulario HTML, enctype se establece en "multipart/form-data". Curiosamente, el nombre base del archivo cargado se imprime, así que creo que PHP ha visto el archivo, pero tiene algún problema para cargarlo. ¿Alguien puede brindar sugerencias sobre posibles soluciones a este problema? Por cierto, estoy usando PHP5.

Fragmentos de archivos PHP

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

formulario HTML

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

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

</form> 
+2

¿Has probado var_dumping your $ _FILES? – n1313

+1

¿Está por casualidad usando Javascript para serializar su formulario? – JorenB

+3

es post_max_size y upload_max_filesize en tu php.ini establecido en un valor lo suficientemente grande? – Zed

Respuesta

6

En qué línea se puede conseguir que la alerta? Si es el que tiene $_POST['picture'], entonces es lógico, te vas a encontrar los datos de archivos subidos en $_POST, es en $_FILES

+1

En una nota al margen ... querrá comprobar si $ _SERVER ['REQUEST_METHOD'] == 'POST' si solo está cargando un archivo en su formulario y no presenta ningún otro dato – SeanJA

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

variables

$_POST['picture'] 

no existe el puesto, así que sí, va a dar un error indefinido.

0

No puedo comentar, así que lo diré aquí.

¡MAN, este eco imprimirá el nombre del archivo! ¡Funciona! Él dijo que funciona.

Curiosamente, el nombre base para el archivo se imprime subidos por lo que creo que PHP ha visto realmente el archivo [...]

Un buen consejo: tratar de var_dump la $_FILES y añadir aquí que es contenido. Es posible que tenga un error porque el archivo es demasiado grande o alguna otra información útil.

0

¿Qué informe de nivel o error está utilizando? error_reporting(E_ALL) activará los informes completos y es posible que le dé una pista. Como se describió anteriormente, haga una impresión de $_FILES con var_dump() o print_r() para ver la información de su archivo.

-2

intento de añadir

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

antes

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

lol, una crítica anterior dijo que si reinicia su servidor arregló. Hice lo mismo, y por alguna razón funciona. No realicé cambios en el código, y los reinicios de IIS tampoco funcionaron. requirió un reinicio de la computadora en sí. eso es aproximadamente 2 horas completamente perdido.

Cuestiones relacionadas