JSCH SFTP 文件传输 - 文件中的数据已损坏
JSCH SFTP file transfer - Data in the file is getting corrupted
我在 java 中使用 JSCH 传输文件时遇到问题。文件中的数据已损坏,并且间歇性地发生这种情况。我的意思是有时文件上传正确,大多数时候我们注意到当文件大小大于 5 MB 时数据已损坏。
该程序在不同情况下表现不同。
Windows-10:程序运行良好,所有大小的文件都没有问题。
Unix :程序适用于小于 2 MB 的文件。但对于大于 2 MB 的文件,有时文件能够正确上传,但大多数时候我们看到数据被损坏。
我仍然不明白是什么导致了数据损坏?我不认为代码有问题,因为程序在 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;
}
我们使用的 jsch 版本中存在错误。阅读 jsch 版本的更改日志,并更新版本。那解决了问题。
我在 java 中使用 JSCH 传输文件时遇到问题。文件中的数据已损坏,并且间歇性地发生这种情况。我的意思是有时文件上传正确,大多数时候我们注意到当文件大小大于 5 MB 时数据已损坏。
该程序在不同情况下表现不同。
Windows-10:程序运行良好,所有大小的文件都没有问题。
Unix :程序适用于小于 2 MB 的文件。但对于大于 2 MB 的文件,有时文件能够正确上传,但大多数时候我们看到数据被损坏。
我仍然不明白是什么导致了数据损坏?我不认为代码有问题,因为程序在 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;
}
我们使用的 jsch 版本中存在错误。阅读 jsch 版本的更改日志,并更新版本。那解决了问题。