Загрузка байтового массива на FTP в Java - PullRequest
1 голос
/ 15 апреля 2020

Моя цель - иметь возможность загружать файлы на FTP-сервер, я немного исследовал и нашел способ загрузки файла, если файл уже хранится локально, у меня есть функция, которая возвращает byte[], поэтому я интересно, как отправить этот файл на FTP-сервер, если он существует в памяти.

private void connect() throws IOException {
    FTPClient ftpClient = new FTPClient();
    ftpClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
    ftpClient.connect(ftp.getServer(), ftp.getPort());
    int reply = ftpClient.getReplyCode();
    if (!FTPReply.isPositiveCompletion(reply)) {
        ftpClient.disconnect();
        throw new RuntimeException("Could not connect to FTP Server");
    } else {
        ftpClient.login(ftp.getUser(), ftp.getPassword());
    }
}

1 Ответ

1 голос
/ 15 апреля 2020

Вы, похоже, используете Apache Commons Net FTPClient.

На самом деле даже нет прямого способа загрузить физический файл . Его FTPClient.storeFile метод принимает только InputStream интерфейс.

Обычно вы используете FileInputStream для ссылки на физический файл:
Как загрузить файл на FTP-сервер?

Пока вы хотите использовать ByteArrayInputStream:
Можем ли мы преобразовать байтовый массив в InputStream в Java?

InputStream is = new ByteArrayInputStream(bytes);
ftpClient.storeFile(remotePath, is);
...