Zoeken…


Syntaxis

  • FTPClient connect (InetAddress-host, int-poort)
  • FTPClient login (String gebruikersnaam, String wachtwoord)
  • FTPClient verbreken ()
  • FTPReply getReplyStrings ()
  • boolean storeFile (String-afstandsbediening, InputStream lokaal)
  • OutputStream storeFileStream (String-afstandsbediening)
  • boolean setFileType (int fileType)
  • boolean completePendingCommand ()

parameters

parameters Details
gastheer Ofwel de hostnaam of het IP-adres van de FTP-server
haven De FTP-serverpoort
gebruikersnaam De gebruikersnaam van de FTP-server
wachtwoord Het FTP-serverwachtwoord

Verbinding maken met en inloggen op een FTP-server

Als u FTP met Java wilt gaan gebruiken, moet u een nieuwe FTPClient en vervolgens verbinding maken en inloggen op de server met .connect(String server, int port) en .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);
    }
}

Nu hebben we de basis gedaan. Maar wat als we een fout hebben bij het verbinden met de server? We willen weten wanneer er iets misgaat en de foutmelding krijgen. Laten we wat code toevoegen om fouten op te vangen tijdens het verbinden.

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 {

}

Laten we afbreken wat we net hebben gedaan, stap voor stap.

showServerReply(ftp);

Dit verwijst naar een functie die we in een latere stap zullen maken.

int replyCode = ftp.getReplyCode();

Dit pakt de antwoord / foutcode van de server en slaat deze op als een geheel getal.

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

Hiermee wordt de antwoordcode gecontroleerd om te zien of er een fout is opgetreden. Als er een fout is opgetreden, wordt er eenvoudig afgedrukt: "Bewerking mislukt. Antwoordcode server:" gevolgd door de foutcode. We hebben ook een try / catch-blok toegevoegd waaraan we in de volgende stap zullen toevoegen. Laten we vervolgens ook een functie maken die ftp.login() op fouten controleert.

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

Laten we dit blok ook afbreken.

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

Dit zal niet alleen proberen om in te loggen op de FTP-server, het zal ook het resultaat opslaan als een Boolean.

showServerReply(ftp);

Dit zal controleren of de server ons berichten heeft gestuurd, maar we moeten eerst de functie in de volgende stap maken.

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

Deze verklaring controleert of we met succes zijn ingelogd; als dit het geval is, wordt "INGEVOERD IN DE SERVER" afgedrukt, anders wordt "Inloggen op de server mislukt" afgedrukt. Dit is ons script tot nu toe:

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 {

        }
    }
}

Laten we nu het Catch-blok compleet maken voor het geval we tijdens het hele proces fouten tegenkomen.

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

Het voltooide vangstblok zal nu afdrukken: "Oeps! Er is iets misgegaan." en de stacktrace als er een fout is. Onze laatste stap is nu het maken van de showServerReply() we al een tijdje gebruiken.

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

Deze functie neemt een FTPClient als een variabele en noemt het "ftp". Daarna slaat het alle serverantwoorden van de server op in een string-array. Vervolgens wordt gecontroleerd of er berichten zijn opgeslagen. Als die er is, worden ze allemaal afgedrukt als "SERVER: [antwoord]". Nu we die functie hebben gedaan, is dit het voltooide script:

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

We moeten eerst een nieuwe FTPClient en proberen verbinding te maken met de server en deze aan te melden met .connect(String server, int port) en .login(String username, String password) . Het is belangrijk om verbinding te maken en in te loggen met behulp van een try / catch-blok voor het geval onze code geen verbinding kan maken met de server. We moeten ook een functie maken die alle berichten controleert en weergeeft die we van de server kunnen ontvangen wanneer we proberen verbinding te maken en in te loggen. We zullen deze functie " showServerReply(FTPClient ftp) " noemen.

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

Hierna zou uw FTP-server nu verbonden moeten zijn met uw Java-script.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow