En esta ocasión hice una clasesita en PHP que me permite hacer lo siguiente:subir un archivo de *.* permitiendo buscarlo en nuestra computadora, así como asignarle un nombre, que es el que tendrá en el servidor (ahi se puede especificar la extension del archivo en el servidor, que puede variar, lo cual es, digamos, un bugsito y no busque como solucionarlo, pero en otro post veremos eso XD ) asi como tambien visualizar los directorios que se encuentran en la carpeta raíz para seleccionar uno (en un listbox) el cual será el directorio en el cual queremos subir el archivo, luego de subirlo nos indica el vínculo para poder descargar el archivo. La clase la tengo a continuación:
class upFile
{
function inicializar()
{
define("ServerFTP","nombreDelServidor");
define("Puerto",puertoDelServidor);//El numero de puerto es un tipo int, asi que va sin comillas dobles o simples
define("Nombrecito","usuarioParaLogin");
define("Secretito","contrasenaParaLogin");
}
function conectarFTP()
{
$conexion = ftp_connect(ServerFTP,Puerto);
ftp_login($conexion,Nombrecito,Secretito);
ftp_pasv($conexion,true);
return $conexion;
}
function subirFile($rutaLocal, $nombreRem)
{
$this->inicializar();
$conexion = $this->conectarFTP();
ftp_put($conexion,$nombreRem,$rutaLocal,FTP_BINARY);
ftp_close($conexion);
}
function verDirs()
{
$this->inicializar();
$conexion = $this->conectarFTP();
$lista = array();
$lista = ftp_nlist($conexion,"/");
for($i = 0;$i<=count($lista);$i++)
{
if (strpos($lista[$i],'.') > 0)
{
unset($lista[$i]);
}
}
ftp_close($conexion);
return $lista;
}
}
?>
Y aqui lo que he hecho es básicamente lo siguiente:
conectarFTP() Iniciamente uso el método ftp_connect(servidor,puerto) para establecer una conexión, cuyo resultado se almacena en una variable que en esencia, es la conexion.
OJO: ¡¡¡Ahorita estamos conectados, pero aun no hemos accedido al servidor!!! Esto es, digamos, como que si "pusieramos" una pasarela entre nosotros y el servidor FTP al cual queremos entrar, pero aun no usamos la pasarela.
Luego, nos logueamos en el servidor para poder acceder a sus archivos y hacer con ellos lo que queramos (segun estén configurados los permisos del servidor) con la función ftp_login(conexion,usuario,contraseña) y luego se usa la función ftp_pasv(conexion,booleano) donde el booleano determinará si la conexión será activa (false) o pasiva (true).
NOTA:Para más información acerca del modo activo/pasivo de conexión FTP, puede ver la siguiente página http://www.ignside.net/man/ftp/pasivo.php.
Al final de la función conectarFTP() hecha por mí, retorno lo que es la conexión como tal para poder ser usada por cualquiera de los métodos que implemente en mi aplicación. Luego tenemos el método subirFile(rutaLocal, nombre) en donde solicito lo que es la ubicación del archivo y el nombre que se desea que el archivo tenga en el servidor. Primeramente, inicializo ciertas variables que contienen datos que ustedes no pueden ver como el nombre del servidor FTP al cual se pretende conectar, el usuario, la contraseña y el puerto en el cual está "escuchando" el servidor (por default 21). Despues de iniciarlizarlas, llamo a la función conectarFTP() para obtener una conexión FTP abierta al servidor, luego uso la función ftp_put(conexion,rutaArchivo,nombre,modo) en donde rutaArchivo es, bueno, ESO, la ruta del archivo, para ello usé un elemento de formulario de tipo file cuya propiedad value almacena la ruta del archivo que fué buscado, mientras que nombre es el nombre especificado que tendrá en el servidor, y finalmente modo que francamente no lo entiendo bien, pero puede ser ftp_ascii ó ftp_binary, y lo que hace esta función es subir el archivo que esta en la ruta especificada usando la conexión especificada y colocándole en el servidor el nombre especificado, usando el modo especificado. Finalmente cierro la conexión con ftp_close(conexion). Esto es lo básico de esta clasesita sencillisima a la cual le faltan cosas como controlar el tipo de archivos a subir, el tamaño de archivos a subir, los permisos que podemos tener sobre los diferentes directorios, etc. Lo cual puede hacerse con otras funciones en PHP del paquetito de funciones FTP que posee, que estan an una libreria que ya incorpora PHP por default.
Debido a razones de evitar abusos de la aplicacioncita o infiltraciones maldeseadas, no la puse activa en algun servidor, pero ustedes pueden descargar la aplicación >>AQUI<< que consta de la clase php, una página para seleccionar el archivo y un directorio y finalmente una página en la cual saldrá la confirmación de que el archivo fué subido así como su ruta para poder ser descargado, y lo que tienen que hacer es únicamente cambiar los valores del nombre del servidor, usuario y contraseña (si los tiene el servidor donde lo prueben) y el puerto por el cual el servidor escucha, en el método inicializar() de la clase. Espero que esto les sirva mucho y cualquier opinión o aporte al tema es bienvenido. Feliz día y ya les traigo más.

No hay comentarios:
Publicar un comentario