繁体   English   中英

如何使用base64编码使用jsch将文件传输到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)

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM