Ricerca…


Sintassi

  • Connessione FTPClient (host InetAddress, porta int)
  • Login FTPClient (nome utente stringa, password stringa)
  • FTPClient disconnect ()
  • FTPReply getReplyStrings ()
  • boolean storeFile (String remote, InputStream local)
  • OutputStream storeFileStream (String remote)
  • booleano setFileType (int fileType)
  • booleano completePendingCommand ()

Parametri

parametri Dettagli
ospite O il nome host o l'indirizzo IP del server FTP
porta La porta del server FTP
nome utente Il nome utente del server FTP
parola d'ordine La password del server FTP

Connessione e accesso a un server FTP

Per iniziare a utilizzare FTP con Java, sarà necessario creare un nuovo FTPClient e quindi connettersi e accedere al server utilizzando .connect(String server, int port) e .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);
    }
}

Ora abbiamo fatto le basi. Ma cosa succede se si verifica un errore durante la connessione al server? Vogliamo sapere quando qualcosa va storto e ricevere il messaggio di errore. Aggiungiamo un po 'di codice per rilevare gli errori durante la connessione.

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 {

}

Analizziamo ciò che abbiamo appena fatto, passo dopo passo.

showServerReply(ftp);

Questo si riferisce a una funzione che faremo in un secondo momento.

int replyCode = ftp.getReplyCode();

Questo preleva il codice di risposta / errore dal server e lo memorizza come un intero.

if (!FTPReply.isPositiveCompletion(replyCode)) {
    System.out.printIn("Operation failed. Server reply code: " + replyCode)
    return;
}

Controlla il codice di risposta per vedere se c'è stato un errore. Se si è verificato un errore, verrà semplicemente stampato "Operazione non riuscita. Codice di risposta del server:" seguito dal codice di errore. Abbiamo anche aggiunto un blocco try / catch a cui aggiungeremo nel prossimo passaggio. Successivamente, creiamo anche una funzione che controlli ftp.login() per gli errori.

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");
    }

Rompiamo anche questo blocco.

boolean success = ftp.login(user, pass);

Questo non tenterà solo di accedere al server FTP, ma memorizzerà anche il risultato come booleano.

showServerReply(ftp);

Questo controllerà se il server ci ha inviato messaggi, ma prima dovremo creare la funzione nel passaggio successivo.

if (!success) {
System.out.println("Failed to log into the server");
    return;
} else {
    System.out.println("LOGGED IN SERVER");
}

Questa affermazione controllerà se abbiamo effettuato l'accesso con successo; in tal caso, stamperà "LOGGED IN SERVER", altrimenti stamperà "Impossibile accedere al server". Questo è il nostro script finora:

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 {

        }
    }
}

Ora dopo creiamo il blocco Catch nel caso in cui ci imbattiamo in eventuali errori con l'intero processo.

} catch (IOException ex) {
    System.out.println("Oops! Something went wrong.");
    ex.printStackTrace();
}

Il blocco catch completato ora stamperà "Oops! Qualcosa è andato storto". e lo stacktrace se c'è un errore. Ora il nostro ultimo passo è creare lo showServerReply() stiamo usando da un po 'di tempo.

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);
        }
    }
}

Questa funzione accetta un FTPClient come variabile e lo chiama "ftp". Successivamente memorizza qualsiasi risposta del server dal server in un array di stringhe. Quindi controlla se qualche messaggio è stato memorizzato. Se ce n'è uno, stampa ciascuno di essi come "SERVER: [rispondi]". Ora che abbiamo fatto quella funzione, questo è lo script completato:

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();
        }
    }
}

Per prima cosa è necessario creare un nuovo FTPClient e provare a connettersi al server e ad .connect(String server, int port) utilizzando .connect(String server, int port) e .login(String username, String password) . È importante connettersi e accedere utilizzando un blocco try / catch nel caso in cui il nostro codice non riesca a connettersi con il server. Dovremo anche creare una funzione che controlli e visualizzi tutti i messaggi che possiamo ricevere dal server mentre proviamo a connetterci e ad accedere. Chiameremo questa funzione " 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();
        }
    }
}

Dopo questo, ora dovresti avere il tuo server FTP connesso allo script Java.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow