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.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow