【问题标题】:How to transfer a file to sftp using jsch using base64 encoding如何使用使用 base64 编码的 jsch 将文件传输到 sftp
【发布时间】:2018-02-07 23:21:46
【问题描述】:

我正在将我的文件编码为 base64 字符串。我想使用 JSch 将其传输到 sftp 文件夹而不创建本地文件。我该怎么做?

【问题讨论】:

    标签: java base64 sftp jsch


    【解决方案1】:

    你可能会使用这个方法

    void put(InputStream src, String dst, SftpProgressMonitor monitor, int mode)
    

    在课堂上ChannelSftp。 JSch 还提供了一个example,介绍如何设置和关闭 SFTP 会话。

    【讨论】:

      【解决方案2】:

      我在 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();
          }
      }
      

      【讨论】:

      • 嗨@shuti,你能展示一下这个场景的代码吗?等待您的回复。
      • @Justin 抱歉回复延迟,我已经添加了相同的代码 sn-p
      猜你喜欢
      • 2013-02-13
      • 1970-01-01
      • 2017-10-10
      • 2017-12-14
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多