完整代码记录,先连接云服务器然后循环创建文件夹最后上传文件
//端口号
int port = HttpCode.HTTP_PORT;
//ssh账户
String user = HttpCode.HTTP_USER;
//ssh账户密码
String password = HttpCode.HTTP_PASSWORD;
//云服务器ip地址
String ip =HttpCode.HTTP_IP;
// 服务器保存路径
String filepath = HttpCode.FILEPATH_FEERETURN;
Session session = null;
Channel channel = null;
JSch jSch = new JSch();
if(port <=0){
//连接服务器,采用默认端口
session = jSch.getSession(user, ip);
}else{
//采用指定的端口连接服务器
session = jSch.getSession(user, ip ,port);
}
//如果服务器连接不上,则抛出异常
if (session == null) {
throw new Exception("session is null");
}
//设置登陆主机的密码
session.setPassword(password);//设置密码
//设置第一次登陆的时候提示,可选值:(ask | yes | no)
session.setConfig("userauth.gssapi-with-mic","no");
session.setConfig("StrictHostKeyChecking", "no");
//设置登陆超时时间
session.connect(30000);
OutputStream outstream = null;
try {
//创建sftp通信通道
channel = (Channel) session.openChannel("sftp");
channel.connect(30000);
ChannelSftp sftp = (ChannelSftp) channel;
String remotePath=filepath+'/'+floderName;
sftp.cd(filepath);
//floderName文件名称,在filepath 路径下需要额外的文件路径,循环创建
String[] folders = floderName.split("/");
for (String folder : folders) {
if (folder.length() > 0) {
try {
sftp.cd(folder);
} catch (SftpException ex) {
sftp.mkdir(folder);
sftp.cd(folder);
}
}
}
//以下代码实现从本地上传一个文件到服务器,如果要实现下载,对换一下流就可以了
outstream = sftp.put(newFileName);
outstream.write(imageBytes);
} catch (Exception e) {
e.printStackTrace();
} finally {
//关流操作
if (outstream != null) {
outstream.flush();
outstream.close();
}
if (session != null) {
session.disconnect();
}
if (channel != null) {
channel.disconnect();
}
}