Передача файлов JSCH SFTP - данные в файле повреждены - PullRequest
0 голосов
/ 17 декабря 2018

Я столкнулся с проблемой при передаче файла с использованием JSCH в Java.Данные в файле повреждены, и это происходит периодически.Я имею в виду, что иногда файл загружается правильно, и в большинстве случаев мы замечали, что данные повреждены, когда размер файла превышает 5 МБ.

Программа ведет себя по-разному в разных сценариях.

Windows-10 : Программа прекрасно работает без проблем для файлов всех размеров.

Unix : Программа отлично работает для файлов размером менее 2 МБ.Но для файлов, размер которых превышает 2 МБ, иногда файл может быть загружен правильно, но в большинстве случаев мы видим, что данные повреждены.

Я все еще не понимаю, что вызывает повреждение данных?Я не думаю, что код имеет проблему, так как программа отлично работает в среде Windows, а иногда и в среде Unix.

Есть ли проблемы с тем, как программа читает данные и записывает на удаленный сервер или любой другойДругая вещь, которую я здесь скучаю?Пожалуйста помоги.

public boolean putFile(String report, String user, String password, String location, 
      String folder) throws Exception {

    boolean status=true;
    JSch shell = new JSch();
    Session session = null;
    session = shell.getSession(user, location, 22);
    session.setPassword(password);
    session.setConfig("StrictHostKeyChecking", "no");
    session.connect();
    Channel channel = null;
    channel = session.openChannel("shell");
    channel.setInputStream(null);
    channel.setOutputStream(null);
    channel = session.openChannel("sftp");
    channel.connect();
    ChannelSftp sftp = (ChannelSftp) channel;
    sftp.cd(folder);
    File outputFile = new File(report);
    FileInputStream fileInputStream = new FileInputStream(outputFile);
    sftp.put(fileInputStream, outputFile.getName());
    session.disconnect();
    return status;
}

1 Ответ

0 голосов
/ 04 января 2019

В используемой нами версии jsch была ошибка.Прочитайте журнал изменений выпусков jsch и обновите версию.Это решило проблему.

...