Ver Mensaje Individual
  #11 (permalink)  
Antiguo 06/03/2009, 10:04
Avatar de benji_
benji_
 
Fecha de Ingreso: marzo-2009
Mensajes: 19
Antigüedad: 15 años, 1 mes
Puntos: 0
El tema es que quiero evitar que el usuario me de la ruta (para que no haya ningun problema si tipeo mal la misma).

Por ahora lo unico que se me ocurre es buscar mi carpeta "x" dentro del servidor del usuario listando los directorios del FTP del mismo con la funcion ftp_nlist(). Es complicado, pero es lo que se me ocurre.

Gracias a todos

Bueno, aqui les dejo lo que logre hacer.

Tuve que recurrir a una busqueda dentro del FTP del usuario. Al principio esta la parte para conectarse al ftp del usuario. Mas abajo esta la funcion que hice para poder buscar la carpeta que necesitaba. Cuando la encuentra me retorna el path completo de la misma, permitiendome subir el archivo a la carpeta ya sea utilizando funciones de FTP o de cURL.

Muchas gracias a todos y espero que el codigo le sirva a alguien



Código:
# FUNCIONES FTP

# CONSTANTES
# Cambie estos datos por los de su Servidor FTP
define("SERVER","ftp.tusitio.com"); //IP o Nombre del Servidor
define("PORT",21); //Puerto
define("USER","usuario"); //Nombre de Usuario
define("PASSWORD","passs"); //Contraseña de acceso
define("PASV",true); //Activa modo pasivo

# FUNCIONES

function ConectarFTP(){
//Permite conectarse al Servidor FTP
$id_ftp=ftp_connect(SERVER,PORT); //Obtiene un manejador del Servidor FTP
ftp_login($id_ftp,USER,PASSWORD); //Se loguea al Servidor FTP
ftp_pasv($id_ftp,MODO); //Establece el modo de conexión
return $id_ftp; //Devuelve el manejador a la función
}


function obtenerDirectorios($ruta){

	$id_ftp=ConectarFTP(); //Obtiene un manejador y se conecta al Servidor FTP
	$lista=ftp_nlist($id_ftp,$ruta); 
	$lista=array_reverse($lista); 
	$directorios = array();
	foreach ($lista as $item) directorio
		{
		$rutaItem = $ruta.'/'.$item;
		$tamano = ftp_size($id_ftp,$rutaItem);
		//Obtiene tamaño de archivo y lo pasa a KB
		if($tamano== -1) 
		{
			array_push($directorios,$item);
		}
	}
	ftp_quit($id_ftp); //Cierra la conexion FTP
	return $directorios; //Devuelve la ruta a la función
}


function buscar($dir,&$dir_a_buscar)
{   
	$directorios= obtenerDirectorios($dir); 
        foreach ($directorios as $d)
	{
        	if ( $d!="." AND $d!=".."  )
         	{
                	if ($dir_a_buscar == $d) 
	 		{
				return $dir.'/'.$d;
			}else{
				$r = buscar($dir.'/'.$d,$dir_a_buscar);
                                if ( basename($r) == $dir_a_buscar )
                                {
                	             return $r;
                         }
                 }       
           }
    }
    return FALSE;
}

$dir ='mi_directorio';

echo buscar('.',$dir);

Última edición por GatorV; 08/03/2009 a las 17:58