如何使用jsch使用base64编码将文件传输到sftp
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)
在 class ChannelSftp. JSch also provides an example 中关于如何设置和取消 SFTP 会话。
我在ChannelSftp中使用了put(String src, String dst)
方法class
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();
}
}
我正在将文件编码为 base64 字符串。我想使用 JSch 将其传输到 sftp 文件夹而不创建本地文件。我该怎么做?
您可能会使用方法
void put(InputStream src, String dst, SftpProgressMonitor monitor, int mode)
在 class ChannelSftp. JSch also provides an example 中关于如何设置和取消 SFTP 会话。
我在ChannelSftp中使用了put(String src, String dst)
方法class
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();
}
}