[英]How to transfer a file to sftp using jsch using base64 encoding
我正在将我的文件编码为 base64 字符串。 我想在不创建本地文件的情况下使用 JSch 将其传输到 sftp 文件夹。 我该怎么做?
您可能会使用该方法
void put(InputStream src, String dst, SftpProgressMonitor monitor, int mode)
在ChannelSftp类中。 JSch 还提供了一个关于如何设置和拆除 SFTP 会话的示例。
我在 ChannelSftp 类中使用了put(String src, String dst)
方法
private void getConnection(String username, String hostname, String password) {
JSch jsch = new JSch();
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
try {
session = jsch.getSession(username, hostname, 22);
session.setConfig(config);
session.setPassword(password);
session.connect();
channel = session.openChannel(CHANNEL_TYPE);
channel.connect();
} catch (JSchException e) {
e.printStackTrace();
}
}
private void disconnectConnections() {
if (channel.isConnected()) {
channel.disconnect();
}
if (session.isConnected()) {
session.disconnect();
}
}
private String getConfiguration(String key) {
return configuration.getString(key);
}
public void uploadToSftp(String sftpFileLocation, String fileToBeUploaded, String filename) {
if (session == null || channel == null || !session.isConnected() || !channel.isConnected()) {
getConnection(getConfiguration(USERNAME), getConfiguration(HOST), getConfiguration(PASSWORD));
}
try {
channelSftp = (ChannelSftp) channel;
channelSftp.cd(sftpFileLocation);
byte[] data = BaseEncoding.base64().decode(fileToBeUploaded);
InputStream is = new ByteArrayInputStream(data);
channelSftp.put(is, filename);
disconnectConnections();
} catch (SftpException e) {
e.printStackTrace();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.