Java Language
FTP (protokół przesyłania plików)
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.