java 通过ssh连接服务器上传,下载,删除文件
package troila.web.utils;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import org.springframework.web.multipart.MultipartFile;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;
import ch.ethz.ssh2.SFTPv3Client;
import ch.ethz.ssh2.Session;
import troila.web.model.Conf;
/**
* ssh上传文件
* @author liuquanrui
*
*/
public class SSHUtil {
private static SCPClient scp;
private static Connection conn;
/**
* 获取连接conn
* @ClassName:SSHUtil.java
* @Description:
* @author: liuquanrui
* @date: 2018年7月5日
*/
public static void getConnect(String serverIp, String username, String password) {
try {
conn = new Connection(serverIp);
conn.connect();
conn.authenticateWithPassword(username, password);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @Description:获取scp
* @return
* @version: v1.1.0
* @author: liuquanrui
* @date: 2018年7月5日 下午4:09:01
*/
public static SCPClient getSCPClient() {
return scp = new SCPClient(conn);
}
/**
*
* @Description:获取连接conn 和 scp
* @version: v1.1.0
* @author: liuquanrui
* @date: 2018年7月5日 下午4:11:38
*/
public static void getConnAndScp() {
SSHUtil.getConnect(Conf.SSHSERVERIP, Conf.SSHUSERNAME, Conf.SSHPASSWORD);
scp = getSCPClient();
}
/**
*
* @Description:上传文件
* @param localFile 本地文件目录
* @param remoteTargetDirectory 远程文件目录
* @version: v1.1.0
* @author: liuquanrui
* @date: 2018年7月5日
*/
public static boolean upload(byte[] data, String fileName,String remoteTargetDirectory) {
boolean flag = false;
try {
getConnAndScp();
//ifDirExist();
scp.put(data, fileName, remoteTargetDirectory,"0777");
flag = true;
conn.close();
} catch (Exception e) {
flag = false;
e.printStackTrace();
}
return flag;
}
/**
*
* @Description:下载文件
* @param remoteTargetDirectory 远程文件目录
* @param localDirectory 本地文件目录
* @version: v1.1.0
* @author: liuquanrui
* @date: 2018年7月5日
*/
public static void download(String remoteTargetDirectory, String localDirectory) {
try {
getConnAndScp();
scp.get(remoteTargetDirectory, localDirectory);
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @Description:删除文件
* @param fileName
* @version: v1.1.0
* @author: liuquanrui
* @date: 2018年7月5日
*/
public static void remove(String fileName) {
try {
SSHUtil.getConnect(Conf.SSHSERVERIP, Conf.SSHUSERNAME, Conf.SSHPASSWORD);
SFTPv3Client sftpClient = new SFTPv3Client(conn);
sftpClient.rm(Conf.REMOTETARGETDIR+fileName);
sftpClient.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @Description:获得上传文件的本地路径和文件名称
* @param file
* @return
* @version: v1.1.0
* @author: liuquanrui
* @date: 2018年7月5日 下午3:04:11
*/
public static Map<String, String> getAbsolutePath(MultipartFile file) {
Map<String, String> map = new HashMap<String, String>();
try {
//创建临时文件
File f = File.createTempFile(MakeStringUtils.createId(16), ".jpg");
//将文件转为file文件
file.transferTo(f);
//获取本地路径
String filePath = f.getAbsolutePath();
//获取文件名称
String newFileName = f.getName();
map.put("filePath", filePath);
map.put("fileName", newFileName);
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
/**
* File的InputStream 转为byte[]
* @param in
* @return
* @throws IOException
*/
public static byte[] toByteArray(InputStream in) throws IOException {
ByteArrayOutputStream out=new ByteArrayOutputStream();
byte[] bufferValue=new byte[in.available()];
byte[] buffer=new byte[1024*4];
int n=0;
while ( (n=in.read(buffer)) !=-1) {
out.write(buffer,0,n);
}
bufferValue = out.toByteArray();
out.close();
return bufferValue;
}
/**
*
* @Description:创建文件夹
* @version: v1.1.0
* @author: liuquanrui
* @date: 2018年7月6日上午9:27:45
*/
public static void makeDir() {
try {
SSHUtil.getConnect(Conf.SSHSERVERIP, Conf.SSHUSERNAME, Conf.SSHPASSWORD);
SFTPv3Client sftpClient = new SFTPv3Client(conn);
sftpClient.mkdir(Conf.REMOTETARGETDIR, 0777);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @Description:判断服务器上的存储路径是否存在,不存在则创建
* @version: v1.1.0
* @author: liuquanrui
* @date: 2018年7月6日上午9:54:12
*/
public static void ifDirExist() {
try {
String cmd = "[ -d Conf.REMOTETARGETDIR ]";
Session session= conn.openSession();//打开一个会话
session.execCommand(cmd);//执行命令
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//String xiegang = File.separator;
//String filePath = "F:\\zaqizaba\\4.jpg";
// SSHUtil.upload(filePath, Conf.REMOTETARGETDIR);
//SSHUtil.download(Conf.REMOTETARGETDIR+xiegang+"1.jpg", "F:\\test");
//SSHUtil.remove("1.jpg");
}
}
- java 通过sftp服务器上传下载删除文件
- Java连接FTP服务器,并上传或下载以及删除ftp服务器中的文件
- java 通过SSH方式连接远程主机并上传和下载文件
- java 通过SSH方式连接远程主机并上传和下载文件
- java 通过sftp服务器上传下载删除文件
- java测试FTP服务器的上传、下载、删除文件
- Java通过FTP服务器上传下载文件的方法
- Java连接SFTP服务器下载上传文件
- JAVA连接FTP服务器,并上传/下载文件代码
- ubuntu下通过ssh登录服务器并通过tftp上传下载文件
- java实现ftp连接、登陆、上传、下载、删除文件、获取目录、文件列表
- Java连接FTP服务器并且实现对其文件的上传和下载
- Java实现FTP服务器的上传、下载、删除、查看文件列表
- Java连接FTP服务器并且实现对其文件的上传和下载
- 解决ssh无法连接服务器问题,ssh上传和下载文件详解
- java 两个通过java代码操作FTP的类,上传下载删除,获取文件
- java向ftp服务器上传下载删除文件
- MAC实用SSH连接远程服务器,并实现文件上传下载
- JAVA连接FTP服务器,并上传/下载文件代码
- Java通过FTP服务器上传下载文件的解决方案