Для отправки файла на FTP-сервер в приложении на платформе Android необходимо использовать классы из пакета org.apache.commons.net.ftp
, которые предоставляют удобные методы для работы с FTP-протоколом.
Вот пример Java-кода, который демонстрирует, как отправить файл на FTP-сервер в Android-приложении:
import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class FTPUploader { public void uploadFile(String server, int port, String username, String password, String filePath, String remoteDir) { FTPClient ftpClient = new FTPClient(); try { ftpClient.connect(server, port); ftpClient.login(username, password); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); File file = new File(filePath); FileInputStream inputStream = new FileInputStream(file); boolean uploaded = ftpClient.storeFile(remoteDir + file.getName(), inputStream); inputStream.close(); if (uploaded) { System.out.println("Файл успешно отправлен на сервер"); } else { System.out.println("Ошибка при отправке файла на сервер"); } ftpClient.logout(); } catch (IOException e) { e.printStackTrace(); } finally { if (ftpClient.isConnected()) { try { ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } } }
В этом примере мы создаем экземпляр класса FTPClient
и устанавливаем соединение с FTP-сервером, используя метод connect()
. Затем мы выполняем аутентификацию на сервере с помощью метода login()
. После этого мы устанавливаем пассивный режим передачи данных с помощью метода enterLocalPassiveMode()
. Затем мы устанавливаем тип передаваемого файла на двоичный с помощью метода setFileType()
.
Затем мы создаем экземпляр класса File
для отправляемого файла и создаем экземпляр класса FileInputStream
, который будет использоваться для чтения файла.
Далее мы вызываем метод storeFile()
, который загружает файл на сервер. В этом примере мы передаем в метод путь к удаленной директории remoteDir
и имя файла file.getName()
. Метод возвращает значение типа boolean
, которое указывает, успешно ли был отправлен файл на сервер.
В завершении мы закрываем поток inputStream
и отключаемся от FTP-сервера вызовом метода logout()
. В случае возникновения ошибок, мы выводим сообщение об ошибке.
Для использования этого класса, достаточно создать экземпляр класса FTPUploader
и вызвать метод uploadFile()
, передав нужные параметры, например:
FTPUploader ftpUploader = new FTPUploader(); ftpUploader.uploadFile("ftp.example.com", 21, "username", "password", "/storage/emulated/0/MyFiles/myfile.txt", "/public_html/files/");
В этом примере мы отправляем файл myfile.txt
на FTP-сервер ftp.example.com
, используя порт 21, имя пользователя "username" и пароль "password". Файл на сервер будет загружен в директорию /public_html/files/
.