Java Language
FTP (Protocolo de transferencia de archivos)
Buscar..
Sintaxis
- FTPClient connect (host InetAddress, puerto int)
- Inicio de sesión de FTPClient (nombre de usuario de String, contraseña de String)
- FTPClient desconectar ()
- FTPReply getReplyStrings ()
- boolean storeFile (cadena remota, InputStream local)
- OutputStream storeFileStream (cadena remota)
- boolean setFileType (int fileType)
- boolean completePendingCommand ()
Parámetros
Parámetros | Detalles |
---|---|
anfitrión | El nombre de host o la dirección IP del servidor FTP |
Puerto | El puerto del servidor FTP |
nombre de usuario | El nombre de usuario del servidor FTP |
contraseña | La contraseña del servidor FTP |
Conexión e inicio de sesión en un servidor FTP
Para comenzar a usar FTP con Java, deberá crear un nuevo FTPClient
y luego conectarse e iniciar sesión en el servidor utilizando .connect(String server, int port)
y .login(String username, String password)
.
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
//Import all the required resource for this project.
public class FTPConnectAndLogin {
public static void main(String[] args) {
// SET THESE TO MATCH YOUR FTP SERVER //
String server = "www.server.com"; //Server can be either host name or IP address.
int port = 21;
String user = "Username";
String pass = "Password";
FTPClient ftp = new FTPClient;
ftp.connect(server, port);
ftp.login(user, pass);
}
}
Ahora tenemos lo básico hecho. ¿Pero qué pasa si tenemos un error de conexión al servidor? Queremos saber cuándo algo sale mal y aparece el mensaje de error. Agreguemos algo de código para detectar errores mientras se conecta.
try {
ftp.connect(server, port);
showServerReply(ftp);
int replyCode = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.printIn("Operation failed. Server reply code: " + replyCode)
return;
}
ftp.login(user, pass);
} catch {
}
Vamos a desglosar lo que acabamos de hacer, paso a paso.
showServerReply(ftp);
Esto se refiere a una función que haremos en un paso posterior.
int replyCode = ftp.getReplyCode();
Esto toma el código de respuesta / error del servidor y lo almacena como un entero.
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.printIn("Operation failed. Server reply code: " + replyCode)
return;
}
Esto verifica el código de respuesta para ver si hubo un error. Si hubo un error, simplemente imprimirá "Error en la operación. Código de respuesta del servidor:" seguido del código de error. También agregamos un bloque try / catch que agregaremos en el siguiente paso. A continuación, también creamos una función que verifique si ftp.login()
errores en ftp.login()
.
boolean success = ftp.login(user, pass);
showServerReply(ftp);
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
Vamos a romper este bloque también.
boolean success = ftp.login(user, pass);
Esto no solo intentará iniciar sesión en el servidor FTP, sino que también almacenará el resultado como un valor booleano.
showServerReply(ftp);
Esto comprobará si el servidor nos envió algún mensaje, pero primero tendremos que crear la función en el siguiente paso.
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
Esta declaración comprobará si iniciamos sesión correctamente; si es así, se imprimirá "LOGGED IN SERVER", de lo contrario se imprimirá "Error al iniciar sesión en el servidor". Este es nuestro guión hasta ahora:
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FTPConnectAndLogin {
public static void main(String[] args) {
// SET THESE TO MATCH YOUR FTP SERVER //
String server = "www.server.com";
int port = 21;
String user = "username"
String pass = "password"
FTPClient ftp = new FTPClient
try {
ftp.connect(server, port)
showServerReply(ftp);
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("Operation failed. Server reply code: " + replyCode);
return;
}
boolean success = ftp.login(user, pass);
showServerReply(ftp);
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
} catch {
}
}
}
Ahora, a continuación, vamos a crear el bloque Catch completo en caso de que encontremos algún error en todo el proceso.
} catch (IOException ex) {
System.out.println("Oops! Something went wrong.");
ex.printStackTrace();
}
El bloque de captura completado ahora se imprimirá "¡Vaya! Algo salió mal". y el stacktrace si hay un error. Ahora nuestro último paso es crear el showServerReply()
que hemos estado usando por un tiempo.
private static void showServerReply(FTPClient ftp) {
String[] replies = ftp.getReplyStrings();
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("SERVER: " + aReply);
}
}
}
Esta función toma un FTPClient
como una variable, y lo llama "ftp". Después de eso, almacena todas las respuestas del servidor desde una matriz de cadenas. A continuación, comprueba si los mensajes fueron almacenados. Si hay alguno, imprime cada uno de ellos como "SERVIDOR: [respuesta]". Ahora que hemos terminado esa función, este es el script completo:
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FTPConnectAndLogin {
private static void showServerReply(FTPClient ftp) {
String[] replies = ftp.getReplyStrings();
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("SERVER: " + aReply);
}
}
}
public static void main(String[] args) {
// SET THESE TO MATCH YOUR FTP SERVER //
String server = "www.server.com";
int port = 21;
String user = "username"
String pass = "password"
FTPClient ftp = new FTPClient
try {
ftp.connect(server, port)
showServerReply(ftp);
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("Operation failed. Server reply code: " + replyCode);
return;
}
boolean success = ftp.login(user, pass);
showServerReply(ftp);
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
} catch (IOException ex) {
System.out.println("Oops! Something went wrong.");
ex.printStackTrace();
}
}
}
Primero debemos crear un nuevo FTPClient
e intentar conectarlo al servidor e iniciar sesión usando .connect(String server, int port)
y .login(String username, String password)
. Es importante conectarse e iniciar sesión con un bloque try / catch en caso de que nuestro código no pueda conectarse con el servidor. También necesitaremos crear una función que verifique y muestre cualquier mensaje que recibamos del servidor cuando intentemos conectarnos e iniciar sesión. Llamaremos a esta función " showServerReply(FTPClient ftp)
".
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FTPConnectAndLogin {
private static void showServerReply(FTPClient ftp) {
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("SERVER: " + aReply);
}
}
}
public static void main(String[] args) {
// SET THESE TO MATCH YOUR FTP SERVER //
String server = "www.server.com";
int port = 21;
String user = "username"
String pass = "password"
FTPClient ftp = new FTPClient
try {
ftp.connect(server, port)
showServerReply(ftp);
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("Operation failed. Server reply code: " + replyCode);
return;
}
boolean success = ftp.login(user, pass);
showServerReply(ftp);
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
} catch (IOException ex) {
System.out.println("Oops! Something went wrong.");
ex.printStackTrace();
}
}
}
Después de esto, ahora debería tener su servidor FTP conectado a su script Java.