English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Простое использование SFTP для загрузки файлов на сервер в Java

Недавно, используя SFTP для загрузки файлов, я нашел некоторые материалы и сделал несколько выводов для будущих поисков. Ниже приведен конкретный код:

 /**
  * Загрузка файла на сервер
  * 
  * @param filePath
  *   путь к файлу
  * @param channelSftp
  *   объект channelSftp
  * @return
  */
 public static boolean uploadFile(String filePath, ChannelSftp channelSftp) {
  OutputStream outstream = null;
  InputStream instream = null;
  boolean successFlag = false;
  try {
   File isfile = new File(filePath);
   if (isfile.isFile()) {
    outstream = channelSftp.put(isfile.getName());
    File file = new File(filePath);
    if (file.exists()) {
     instream = new FileInputStream(file);
     byte b[] = new byte[1024];
     int n;
     while ((n = instream.read(b)) != -1) {
      outstream.write(b, 0, n);
     }
     outstream.flush();
    }
    successFlag = true;
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
   try {
    if (instream != null) {
     instream.close();
    }
    if (outstream != null) {
     outstream.close();
    }
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
  return successFlag;
 }
 private static Session initJschSession()
   throws JSchException {
  int ftpPort = 0;
  String ftpHost = "";
  String port = "00"; // порт sftp
  String ftpUserName = ""; // имя пользователя
  String ftpPassword = ""; // пароль для подключения
  String privateKey = ""; //
  String passphrase = "";
  if (port != null && !port.equals("")) {
   ftpPort = Integer.valueOf(port);
  }
  JSch jsch = new JSch(); // Создаем объект JSch
  if (StringUtils.isNotBlank(privateKey)
    && StringUtils.isNotBlank(passphrase)) {
   jsch.addIdentity(privateKey, passphrase);
  }
  if (StringUtils.isNotBlank(privateKey)
    && StringUtils.isBlank(passphrase)) {
   jsch.addIdentity(privateKey);
  }
  jsch.getSession(ftpUserName, ftpHost, ftpPort);
  Session session = jsch.getSession(ftpUserName, ftpHost, ftpPort); // Получаем объект Session по имени пользователя, IP-адресу хоста и порту
  if (StringUtils.isNotBlank(ftpPassword)) {
   session.setPassword(ftpPassword); // Устанавливаем пароль
  }
  return session;
 }
 /**
  * Получение ссылки ChannelSftp
  * 
  * @param timeout
  * Время ожидания
  * @return Возвращает объект ChannelSftp
  * @throws JSchException
  */
 public static ChannelSftp getChannelSftp(Session session, int timeout)
   throws JSchException {
  Channel channel = null;
  Properties config = new Properties();
  config.put("StrictHostKeyChecking", "no");
  session.setConfig(config); // Устанавливаем properties для объекта Session
  session.setTimeout(timeout); // Устанавливаем время timeout
  session.connect(); // Устанавливаем соединение через Session
  channel = session.openChannel("sftp"); // Открываем канал SFTP
  channel.connect(); // установить соединение с каналом SFTP
  return (ChannelSftp) channel; 
 }
 /**
  * разорвать SFTP-соединение
  * 
  * @param session
  *   сеанс
  * @param channel
  *   канал
  */
 public static void closeConnection(Channel channel, Session session) {
  try {
   if (session != null) {
    session.disconnect(); // закрыть соединение с сессией
   }
   if (channel != null) {
    channel.disconnect(); // разорвать соединение
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

Здесь имя пользователя и пароль установлены самостоятельно, этот метод был просто обернут, чтобы его было удобно использовать.

Ниже приведено простое руководство по использованию Java для загрузки файлов на сервер через SFTP, надеюсь, это поможет вам. Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий, и я отвечу вам своевременно. В этом также выражаю благодарность всем, кто поддерживает сайт呐喊 руководств!

Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору, контент предоставлен пользователями Интернета, сайт не имеет права собственности, не был отредактирован вручную, и не несет ответственности за соответствующие юридические последствия. Если вы обнаружите подозрительное нарушение авторских прав, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (при отправке письма замените # на @) для сообщения о нарушении и предоставьте соответствующие доказательства. Если подтвердится, сайт немедленно удалят涉嫌侵权的内容。

Рекомендуется для вас