Java Language
FTP (протокол передачи файлов)
Поиск…
Синтаксис
- Соединение FTPClient (хост InetAddress, int port)
- Логин FTPClient (имя пользователя String, пароль String)
- Отключение FTPClient ()
- FTPReply getReplyStrings ()
- boolean storeFile (String remote, InputStream local)
- Хранилище OutputStreamFileStream (String remote)
- boolean setFileType (int fileType)
- boolean completePendingCommand ()
параметры
параметры | подробности |
---|---|
хозяин | Либо имя хоста, либо IP-адрес FTP-сервера |
порт | Порт FTP-сервера |
имя пользователя | Имя пользователя FTP-сервера |
пароль | Пароль FTP-сервера |
Подключение и вход в FTP-сервер
Чтобы начать использовать FTP с Java, вам нужно будет создать новый FTPClient
а затем подключиться и войти на сервер с помощью .connect(String server, int port)
и .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);
}
}
Теперь у нас есть основы. Но что, если у нас есть ошибка подключения к серверу? Мы хотим знать, когда что-то пойдет не так, и получите сообщение об ошибке. Давайте добавим код, чтобы поймать ошибки при подключении.
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 {
}
Давайте сломаем то, что мы только что сделали, шаг за шагом.
showServerReply(ftp);
Это относится к функции, которую мы будем делать на более позднем этапе.
int replyCode = ftp.getReplyCode();
Это захватывает код ответа / ошибки с сервера и сохраняет его как целое.
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.printIn("Operation failed. Server reply code: " + replyCode)
return;
}
Это проверяет код ответа, чтобы узнать, была ли ошибка. Если произошла ошибка, она просто выведет «Операция не выполнена. Код ответа сервера:», за которой следует код ошибки. Мы также добавили блок try / catch, который мы добавим на следующем шаге. Затем давайте создадим функцию, которая проверяет 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");
}
Давайте также сломаем этот блок.
boolean success = ftp.login(user, pass);
Это не просто попытка входа на FTP-сервер, но и сохранение результата в виде логического.
showServerReply(ftp);
Это проверит, посылал ли сервер нам какие-либо сообщения, но сначала нам нужно создать функцию на следующем шаге.
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
Этот оператор проверяет, успешно ли мы вошли в систему; если это так, он напечатает «LOGGED IN SERVER», иначе он напечатает «Не удалось войти в сервер». Это наш скрипт:
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 {
}
}
}
Теперь давайте создадим полный блок Catch, если мы столкнемся с любыми ошибками всего процесса.
} catch (IOException ex) {
System.out.println("Oops! Something went wrong.");
ex.printStackTrace();
}
Завершенный блок блокировки теперь будет печатать «Ой, что-то пошло не так». и stacktrace, если есть ошибка. Теперь наш последний шаг - создать showServerReply()
мы использовали некоторое время.
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);
}
}
}
Эта функция принимает 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) {
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();
}
}
}
Сначала нам нужно создать новый FTPClient
и попробовать подключиться к серверу и войти в него с помощью .connect(String server, int port)
и .login(String username, String password)
. Важно подключиться и войти в систему с помощью блока try / catch, если наш код не сможет подключиться к серверу. Нам также необходимо создать функцию, которая проверяет и отображает любые сообщения, которые мы можем получать с сервера, когда мы пытаемся подключиться и войти в систему. Мы будем называть эту функцию « 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();
}
}
}
После этого вы должны теперь подключить свой FTP-сервер к вам Java-скрипту.