Java Apache FTP клиент - Возобновить прерванную загрузку - PullRequest
0 голосов
/ 26 сентября 2018

Мне нужно реализовать возобновление загрузки в моем FTP-клиенте, если что-то пошло не так.ftp в приведенном ниже примере: Apache FTPClient.

public boolean upload(InputStream localFile, String remoteName, boolean createNew) {

    if (StringUtils.isBlank(remoteName)) {
        log.warn("Error while uploading file: localFile or remoteName is null");
        return false;
    }

    synchronized (this) {
        try {

            if (createNew) {
                return ftp.storeFile(remoteName, localFile);
            } else {
                return ftp.appendFile(remoteName, localFile); //todo is it right?
            }
        } catch (Exception ex) {
            log.error(ex.getMessage(), ex);
            return false;
        }
    }

}

Так что, если ftp.storeFile дает сбой (не все байты были отправлены, например), как я могу продолжить загрузку, используято же самое InputStream?

1 Ответ

0 голосов
/ 26 сентября 2018
  • восстановить соединение с вашим FTP-сеансом (если он тоже был прерван);
  • проверить размер удаленного файла, чтобы определить, сколько байтов прошло до удаленного диска (например, с помощью )FTPClient.mlistFile или SIZE команда - см. Как получить информацию о FTPFile );
  • искать «входной поток» обратно к этой точке (хотя InputStream делаетне поддерживает поиск, поэтому вам придется использовать другую реализацию потока - или заново открыть InputStream и skip до позиции);
  • call FTPClient.appendFile.
...