si no sabe lo que te está devolviendo prueba con print_r($_FILES);
si bien recuerdo cuando son multiples archivo retorna un array multidimensional con un indice numérico
$_FILES[id][...datos...]
pero ojo que cuando se sube un solo archivo retorna un array sin indice
$_FILES[...datos...]
asi que lo que hago es que si se ha subido un solo archivo entonces que le de un indice cero y despues que lo procese.
Dale un vistazo a una clase que hize hace tiempo:
function guardar_subidos($directorio_almacenamiento, $extensiones_permitidas = false, $crear_directorio = false, $un_solo_archivo = false){
/* Verifica si hay archivos subidos para ser recibidos */
return false;
}
}else{
return false;
}
if($un_solo_archivo){
'estado' => 'error',
'descripcion_error' => 'Solo es permitido subir un solo archivo y se ha detectado mas de uno'
);
}
}
/* Verifica si el directorio de guardado es válido o no */
if(!is_dir($directorio_almacenamiento)){ if($crear_directorio){
if(!mkdir($directorio_almacenamiento, 0755)){ 'estado' => 'error',
'descripcion_error' => 'El directorio a guardar los archivos subidos no existe y fue imposible crear'
);
}
}else{
'estado' => 'error',
'descripcion_error' => 'El directorio a guardar los archivos subidos no existe'
);
}
}
/* Limpia la ruta del directorio evitando doble slashses y null bytes */
$directorio_almacenamiento = dirname($directorio_almacenamiento.'/archivo.ext').'/';
/* Si no existe el directorio entonces lo creará */
if(!is_dir($directorio_almacenamiento)){ if(!mkdir($directorio_almacenamiento, 0755)) 'estado' => 'error',
'descripcion_error' => 'No se pudo crear el nuevo directorio. Verifique los permisos de escritura sobre el directorio raiz'
);
}
/* Procesa cada archivo subido para pasar de un array con uno a dos dimensiones a una sola dimensión */
foreach($_FILES as $nombre_array => $archivo){
/* Verifica si se ha subido un solo archivo o varios */
if(is_array($_FILES[$nombre_array]['name'])){ /* Múltiples archivos */ /* Procesa cada archivo subido */
foreach($_FILES[$nombre_array]['name'] as $id => $nombre){
/* Verifica que no sea un input vacio */
if($_FILES[$nombre_array]['name'][$id]){
'name' => $_FILES[$nombre_array]['name'][$id],
'type' => $_FILES[$nombre_array]['type'][$id],
'tmp_name' => $_FILES[$nombre_array]['tmp_name'][$id],
'error' => $_FILES[$nombre_array]['error'][$id],
'size' => $_FILES[$nombre_array]['size'][$id]
);
}
}
}else{ /* Un solo archivo */
$subidos[] = $archivo;
}
}
/* Verifica si se ha subido algún archivo */
/* Procesa cada archivo subido previamente filtrado en un solo array de una dimensión */
foreach($subidos as $subido){
if(archivos::coincide_extension($subido['name'], $extensiones_permitidas)){
'estado' => 'ok',
'name' => $subido['name'],
'type' => $subido['type'],
'error' => $subido['error'],
'size' => $subido['size']
);
}else{
'estado' => 'error',
'descripcion_error' => 'El archivo "'.$subido['name'].'" no pudo ser movido. Verifique los permisos de escritura sobre el directorio raiz',
'name' => $subido['name'],
'type' => $subido['type'],
'error' => $subido['error'],
'size' => $subido['size']
);
}
}else{
'estado' => 'error',
'descripcion_error' => 'El archivo "'.$subido['name'].'" contiene una extensión no válida',
'name' => $subido['name'],
'type' => $subido['type'],
'error' => $subido['error'],
'size' => $subido['size']
);
}
}else{
'estado' => 'ok',
'name' => $subido['name'],
'type' => $subido['type'],
'error' => $subido['error'],
'size' => $subido['size']
);
}else{
'estado' => 'error',
'descripcion_error' => 'El archivo "'.$subido['name'].'" no pudo ser movido',
'name' => $subido['name'],
'type' => $subido['type'],
'error' => $subido['error'],
'size' => $subido['size']
);
}
}
}
}else{
'estado' => 'error',
'descripcion_error' => 'No hay archivos para ser subidos'
);
}
/* Retorna el resultado */
'estado' => 'ok',
'datos' => $resultados
);
}