2010-05-25 22 views
5

Estoy trabajando en un script de carga de PHP y al probar mis comprobaciones de error, intenté cargar un archivo TIFF de 17MB. Cuando hago esto, la matriz $ _FILES está vacía. La secuencia de comandos funciona bien para lo que necesito hacer, que es cargar archivos JPEG. Mi solución es probar si $ _FILES está vacío o no antes de continuar con el script de carga.

¿Alguien puede explicar por qué $ _FILES está vacío cuando se intenta cargar un TIFF? ¿Mi solución es verificar si $ _FILES está vacío o no, está bien?

¿Tiene esto algo que ver con la configuración en php.ini?

sólo para aclarar

yo era la que estaba vacío $_FILES utilizando la siguiente:

if(empty($_FILES)) 
{ 
    die('$_FILES is empty.'); 
} 

Respuesta

7

Sí, upload_max_filesize controla el tamaño máximo de carga, que probablemente exceda el archivo TIFF. El valor predeterminado es 2M. Puede probar con:

echo ini_get("upload_max_filesize"); 

EDIT: En realidad, la causa exacta es más probable post_max_size, que siempre es> = upload_max_filesize: "Si el tamaño de los datos de entrada es mayor que post_max_size, los $ _POST y $ _FILES superglobales están vacíos ".

+0

¡Gracias! Definitivamente fue porque el tamaño del archivo TIFF superó tanto 'upload_max_filesize' como' post_max_size'. –

1

usted debe comprobar para ver si es igual a $_FILES['file']['error']0. Esto indica un "éxito".

Si los archivos de matriz está vacía, puede ser debido a algún otro problema, al igual que no incluye el enctype.

trate de hacer var_dump($_FILES) y la visualización de los contenidos ...

EDITAR: Sé que se puede ajustar el tamaño de archivo máximo en el archivo php.ini, pero no estoy seguro de si eso le dará una serie de archivos vacía. Creo que obtendrás un error.

+0

Buen consejo. Para var_dump una matriz vacía –

+1

@Col - Como suena como un principiante, fue para ayudar a verificar que la matriz está vacía y que no está viendo el índice incorrecto. –

0

tal como fue anunciado ya, que está vacío, porque si hay un error. También comprobar si hay un elemento de formulario como el siguiente:

<input type="hidden" name="MAX_FILE_SIZE" value="-maxsizegoeshereinbytes-" /> 

Para ser extraordinariamente seguro (una vez que realmente tiene una matriz - la adición a la 'compruebe la clave de error' post, por cierto), también se puede comprobar el tamaño

if($_FILES['file']['size'] > 0) { 

} 
+0

Eso no es verdad. Solo PHP presta atención al campo MAX_FILE_SIZE. –

+0

Respuesta actualizada - gracias por ese detalle. Aunque sigue siendo aplicable, ya que esto es php. –

+0

Su respuesta todavía es irrelevante –

Cuestiones relacionadas