English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Após encontrar algumas informações sobre o upload de arquivos SFTP, fiz uma breve小结 para facilitar as consultas futuras. O código específico é como segue:
/** * Enviar arquivo para o servidor * * @param filePath * caminho do arquivo * @param channelSftp * objeto 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; } } 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"; //Porta do SFTP String ftpUserName = ""; //Nome de usuário String ftpPassword = ""; //Senha da conexão String privateKey = ""; // String passphrase = ""; if (port != null && !port.equals("")) { ftpPort = Integer.valueOf(port); } JSch jsch = new JSch(); // Criar objeto 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); // Obter um objeto Session com base no nome de usuário, IP do host e porta if (StringUtils.isNotBlank(ftpPassword)) { session.setPassword(ftpPassword); // Definir a senha } return session; } /** * Obter a conexão ChannelSftp * * @param timeout * Tempo de timeout * @return Retornar o objeto 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); // Definir propriedades do objeto Session session.setTimeout(timeout); // Definir o tempo de timeout session.connect(); // Estabelecer a conexão através da sessão channel = session.openChannel("sftp"); // Abrir o canal SFTP channel.connect(); // Estabelecer a conexão do canal SFTP return (ChannelSftp) channel; } /** * Desconectar o link SFTP * * @param session * Sessão * @param channel * Canal */ public static void closeConnection(Channel channel, Session session) { try { if (session != null) { session.disconnect(); //Fechar a conexão da sessão } if (channel != null) { channel.disconnect(); //Desconectar a conexão } } e.printStackTrace(); } }
Os nomes de usuário e senhas aqui são definidos por você mesmo. Este método foi encapsulado de maneira simples para facilitar o uso.
O que está descrito acima é um tutorial simples sobre como usar o Java para fazer upload de arquivos para o servidor via SFTP, espero que ajude a todos. Se você tiver alguma dúvida, por favor, deixe um comentário aqui. Eu responderei às perguntas o mais rápido possível. Também agradeço pelo apoio ao site Tutorial de Grito!
Declaração: O conteúdo deste artigo foi extraído da internet, pertence ao respectivo proprietário, foi contribuído e carregado voluntariamente pelos usuários da internet, este site não possui direitos autorais, não foi editado manualmente e não assume responsabilidade legal. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#w para denunciar. Se você tiver qualquer dúvida, por favor, deixe um comentário aqui. Eu responderi às perguntas o mais rápido possível. Agradeço também pelo apoio ao site Tutorial de Grito!3Aviso: Este conteúdo foi extraído da internet, pertence ao respectivo proprietário, foi carregado voluntariamente pelos usuários da internet, este site não possui direitos autorais, não foi editado manualmente e não assume responsabilidade legal. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#w para denunciar, e forneça provas relevantes. Se confirmado, o conteúdo suspeito será imediatamente removido deste site.