话不多说,直接上代码
public static void sshSftp(InputStream inputStream, String fileName, String ip,
String user, String pwd, String port, String path) throws Exception{
Session session = null;
Channel channel = null;
JSch jSch = new JSch();
int portN = Integer.parseInt(port);
if (Integer.parseInt(port) <= 0){
session = jSch.getSession(user,ip);
}else {
session = jSch.getSession(user,ip,portN);
}
if (session == null){
throw new MyException(ErrorCode.SFTP_CONNECTION_FAILED);
}
session.setPassword(pwd);
session.setConfig("StrictHostKeyChecking", "no");
session.setTimeout(30000);
session.connect(30000);
OutputStream outputStream = null;
BufferedInputStream bis = null;
String storeDocPath = fileName;
File storeFile = new File(storeDocPath);
try{
channel = (Channel)session.openChannel("sftp");
channel.connect(1000);
ChannelSftp sftp = (ChannelSftp)channel;
//connect to the specific dir
sftp.cd(path);
outputStream = sftp.put(fileName);
bis = new BufferedInputStream(inputStream);
int c;
while ((c = bis.read()) != -1) {
outputStream.write(c);
}
}catch (Exception e){
System.out.println(e);
}finally {
//关流操作
if(outputStream != null){
outputStream.flush();
outputStream.close();
}
if(session != null){
session.disconnect();
}
if(channel != null) {
channel.disconnect();
}
}
}