package com.utils; import com.jcraft.jsch.*; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Properties; /** * Author: * Date: * Description: * 创建ChannelSftp对象,编写一个工具类,根据ip, * 用户名及密码得到一个SFTP channel对象,即ChannelSftp的实例对象, * 在应用程序中就可以使用该对象来调用SFTP的各种操作方法。 */ public class SFTPUtils { public static String sftpPut(String host, String port, String username, String password, String uploadDir, InputStream in, String fileName) { ChannelSftp sftp = null; String subDir = null; String filePath = null; try { //1.获取会话 JSch jSch = new JSch(); int i = Integer.parseInt(port); Session session = jSch.getSession(username, host, i); session.setPassword(password); Properties properties = new Properties(); properties.put("StrictHostKeyChecking", "no"); session.setConfig(properties); session.connect(); //2.获取上传的管道 Channel channel = session.openChannel("sftp"); channel.connect(); sftp = (ChannelSftp) channel; //3.切换目录 SimpleDateFormat dataFormat = new SimpleDateFormat("yyyyMMdd"); subDir = dataFormat.format(new Date()); try { filePath = uploadDir + "//" + subDir; sftp.cd(uploadDir + "//" + subDir); } catch (SftpException e) { //目录不存在,新建目录 try { filePath = uploadDir + "//" + subDir; sftp.mkdir(uploadDir + "//" + subDir); sftp.cd((uploadDir + "//" + subDir)); } catch (SftpException e1) { } } //4.上传 sftp.put(in, fileName); //5.关闭 sftp.disconnect(); channel.disconnect(); session.disconnect(); } catch (Exception e) { } return filePath; } } //配置文件
sftp.SFTP_REQ_HOST=服务器地址 sftp.SFTP_REQ_PORT=22 sftp.sftp.SFTP_REQ_USERNAME=用户名 sftp.SFTP_REQ_PASSWORD=密码 sftp.uploadDir=服务器中的文件路径