Как отправить файл на фтп сервер?

Для отправки файла на 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/.