Передача файлов JSCH SFTP - данные в файле повреждены
Я сталкиваюсь с проблемой при передаче файла с использованием 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 ответ
Была ошибка в jsch-версии, которую мы использовали. Прочитайте журнал изменений выпусков jsch и обновите версию. Это решило проблему.