Szukaj…


Składnia

  • FTPClient connect (host InetAddress, port wewnętrzny)
  • Logowanie klienta FTP (nazwa użytkownika ciągu, hasło ciągu)
  • FTPClient Disconnect ()
  • FTPReply getReplyStrings ()
  • boolean storeFile (ciąg zdalny, lokalny InputStream)
  • OutputStream storeFileStream (Zdalny ciąg)
  • boolean setFileType (int fileType)
  • boolean completePendingCommand ()

Parametry

Parametry Detale
gospodarz Nazwa hosta lub adres IP serwera FTP
Port Port serwera FTP
Nazwa Użytkownika Nazwa użytkownika serwera FTP
hasło Hasło do serwera FTP

Podłączanie i logowanie do serwera FTP

Aby rozpocząć korzystanie z FTP z Javą, musisz utworzyć nowego FTPClient FTP, a następnie połączyć się i zalogować do serwera za pomocą .connect(String server, int port) i .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);
    }
}

Teraz mamy już podstawy. Ale co, jeśli wystąpi błąd połączenia z serwerem? Będziemy chcieli wiedzieć, kiedy coś pójdzie nie tak, i otrzymamy komunikat o błędzie. Dodajmy kod, aby wychwycić błędy podczas łączenia.

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 {

}

Podzielmy się tym, co właśnie zrobiliśmy, krok po kroku.

showServerReply(ftp);

Odnosi się to do funkcji, którą będziemy wykonywać w późniejszym etapie.

int replyCode = ftp.getReplyCode();

Spowoduje to pobranie kodu odpowiedzi / błędu z serwera i zapisanie go jako liczby całkowitej.

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

Sprawdza to kod odpowiedzi, aby sprawdzić, czy wystąpił błąd. Jeśli wystąpił błąd, po prostu wydrukuje „Operacja nie powiodła się. Kod odpowiedzi serwera:”, a następnie kod błędu. Dodaliśmy również blok try / catch, do którego dodamy w następnym kroku. Następnie stwórzmy także funkcję, która sprawdza ftp.login() kątem błędów.

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

Rozbijmy też ten blok.

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

To nie tylko próba zalogowania się do serwera FTP, ale także zapisanie wyniku jako wartość logiczną.

showServerReply(ftp);

Spowoduje to sprawdzenie, czy serwer wysłał nam jakieś wiadomości, ale najpierw musimy utworzyć funkcję w następnym kroku.

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

To oświadczenie sprawdzi, czy zalogowaliśmy się pomyślnie; jeśli tak, to wypisze „LOGGED IN SERVER”, w przeciwnym razie wypisze „Nie można zalogować się do serwera”. Oto nasz skrypt do tej pory:

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 {

        }
    }
}

Teraz stwórzmy teraz kompletny blok Catch na wypadek, gdybyśmy napotkali jakieś błędy w całym procesie.

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

Zakończony blok catch wyświetli teraz „Ups! Coś poszło nie tak”. i stacktrace, jeśli wystąpi błąd. Teraz naszym ostatnim krokiem jest stworzenie showServerReply() którego korzystamy już od dłuższego czasu.

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

Ta funkcja przyjmuje FTPClient jako zmienną i nazywa go „ftp”. Następnie przechowuje wszelkie odpowiedzi serwera z serwera w tablicy ciągów. Następnie sprawdza, czy jakieś wiadomości zostały zapisane. Jeśli istnieje, drukuje każdy z nich jako „SERWER: [odpowiedź]”. Po wykonaniu tej funkcji jest to gotowy skrypt:

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

Najpierw musimy stworzyć nową FTPClient i spróbuj połączyć się z serwerem ją i logowania do niego za pomocą .connect(String server, int port) i .login(String username, String password) . Ważne jest, aby połączyć się i zalogować przy użyciu bloku try / catch na wypadek, gdyby nasz kod nie łączył się z serwerem. Będziemy także musieli stworzyć funkcję, która sprawdza i wyświetla wszelkie wiadomości, które możemy otrzymywać z serwera podczas próby połączenia i logowania. showServerReply(FTPClient ftp) tę funkcję „ 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();
        }
    }
}

Następnie powinieneś mieć serwer FTP podłączony do skryptu Java.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow