Blog
En este tutorial aprenderemos a crear un cliente FTP en Java utilizando las librerías que nos proporciona Apache Commons.
De esta forma lo primero que debemos hacer es descargarnos la librería desde el sitio oficial: http://commons.apache.org/proper/commons-net/download_net.cgi. Luego debemos importar el commons-net-3.3.jar como dependencia en nuestro proyecto. Si estamos utilizando Eclipse como IDE podemos hacer click derecho en nuestro proyecto e ir a “Properties -> Java Build Path -> Libraries -> Add External JARs” y seleccionar el archivo JAR descargado. Es importante mencionar que en nuestro caso estamos usando la versión 3.3.
¿Cómo crear un cliente FTP en Java?
Para realizar esto primero debemos importar la librería en nuestro proyecto:
import org.apache.commons.net.ftp.FTPClient;
Luego podemos instanciar nuestro objeto FTPClient para poder conectarnos a nuestro servidor FTP:
import java.io.IOException; import org.apache.commons.net.ftp.FTPClient; public class ClienteFTP { public static void main(String[] args) { // Creando nuestro objeto ClienteFTP FTPClient client = new FTPClient(); // Datos para conectar al servidor FTP String ftp = "ftp.miservidor.com"; // También puede ir la IP String user = "usuario"; String password = "password"; try { // Conactando al servidor client.connect(ftp); // Logueado un usuario (true = pudo conectarse, false = no pudo // conectarse) boolean login = client.login(user, password); // Cerrando sesión client.logout(); // Desconectandose con el servidor client.disconnect(); } catch (IOException ioe) { } } }
¿Cómo subir un archivo por FTP en Java?
Ahora si queremos subir un archivo tenemos que utilizar el método storeFile del objeto FTPClient. A continuación el código completo:
import java.io.FileInputStream; import java.io.IOException; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; public class ClienteFTP { public static void main(String[] args) { // Creando nuestro objeto ClienteFTP FTPClient client = new FTPClient(); // Datos para conectar al servidor FTP String ftp = "ftp.miservidor.com"; // También puede ir la IP String user = "usuario"; String password = "password"; try { // Conactando al servidor client.connect(ftp); // Logueado un usuario (true = pudo conectarse, false = no pudo // conectarse) boolean login = client.login(user, password); client.setFileType(FTP.BINARY_FILE_TYPE, FTP.BINARY_FILE_TYPE); client.setFileTransferMode(FTP.BINARY_FILE_TYPE); client.enterLocalPassiveMode(); String filename = "miarchivo.txt"; FileInputStream fis = new FileInputStream(filename); // Guardando el archivo en el servidor client.storeFile(filename, fis); // Cerrando sesión client.logout(); // Desconectandose con el servidor client.disconnect(); } catch (IOException ioe) { System.out.println(ioe.getMessage()); } } }
Con el código anterior podemos conectarnos a un servidor FTP y subir un archivo.
Bueno gente, hemos llegado al final de este tutorial espero que les sea de gran utilidad, ante cualquier problema no duden en dejar un comentario.
el servidor me da un error:
(000013)19/07/2016 15:56:00 p.m. – img_kts (192.168.1.71)> 550 Filename invalid
Quiero suponer que se debe a que al subir un archivo no estoy poniendo la ruta de dónde quiero que se suba.
Si esta es la causa del error ¿cómo puedo dar un path al cliente FTP? o si no es la causa ¿Cuál podría ser?
Hola Jorge, pueden ser 2 las causas. El archivo no existe o no tenes los permisos necesarios.
Me marca un error en esta linea Client.connect(direccionIp);
Client no lo reconoze….
Olvídalo, el error fue mio, gracias por tu aportación 🙂
Hola Manuel, me alegra que te haya sido util el tutorial. Saludos.
Donde especifico la ruta de donde se está obteniendo el archivo y a donde se está subiendo? me podrías apoyar por favor.
Hola David, los archivos se están guardando en el directorio raíz del servidor FTP.
Hola, se puede cambiar el puerto? , p. ej: miservidor.com:7070
Hola Javier, podes cambiar el puerto tranquilamente, acordate que desde el cliente vas a tener que conectarte al nuevo puerto. Un saludo.
Hola como andan todos. Una consulta, podría poner una base de datos en mysql y generar consultas a través de este protocolo ? Cómo podría hacerlo en todo caso.
Hola Brandon, el protocolo solamente sirve para transferir archivos. No vas a poder ejecutar archivos con FTP. Eso lo tenes que hacer con algún lenguaje de programación como PHP.
Hola estoy haciendo una aplicacion que sea actualizable y mediante el ftp quiero conectarme al servidor y pedir el .jar, me podrias ayudar?
Gracias de antemano
Hola Facundo, nosotros escribimos tutoriales para ayudar y compartir el conocimiento pero no podemos realizarte tus tareas. Gracias por comentar!