English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Недавно, используя 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 (при отправке письма замените # на @) для сообщения о нарушении и предоставьте соответствующие доказательства. Если подтвердится, сайт немедленно удалят涉嫌侵权的内容。