一、必要的jar包
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.jcraft/jsch -->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
<scope>compile</scope>
</dependency>
二、yml 的相关配置
sftp:
host: *****
port: ****
username: *****
password: ****
uploadDirectory: /upload
downloadDirectory: /download
三、工具类
工具类参考:https://blog.youkuaiyun.com/yhl_jxy/article/details/72633034
package com.cq.base.utils;
import com.jcraft.jsch.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import java.io.*;
import java.util.Properties;
import java.util.Vector;
/**
* @Author: admin
* @Despriction:
* @Package: com.cq.base.utils
* @Date:Created in 2021/2/1 15:42
* @Modify By:
*/
@Slf4j
public class SFTPUtil {
private ChannelSftp sftp;
private Session session;
/** FTP 登录用户名*/
private String username;
/** FTP 登录密码*/
private String password;
/** 私钥 */
private String privateKey;
/** FTP 服务器地址IP地址*/
private String host;
/** FTP 端口*/
private int port;
/**
* 构造基于密码认证的sftp对象
* @param username
* @param password
* @param host
* @param port
*/
public SFTPUtil(String username, String password, String host, int port) {
this.username = username;
this.password = password;
this.host = host;
this.port = port;
}
/**
* 构造基于秘钥认证的sftp对象
* @param username
* @param host
* @param port
* @param privateKey
*/
public SFTPUtil(String username, String host, int port, String privateKey) {
this.username = username;
this.host = host;
this.port = port;
this.privateKey = privateKey;
}
public SFTPUtil(){}
/**
* 连接sftp服务器
*
* @throws Exception
*/
public void login(){
try {
JSch jsch = new JSch();
if (privateKey != null) {
jsch.addIdentity(privateKey);// 设置私钥
log.info("sftp connect,path of private key file:{}" , privateKey);
}
log.info("sftp connect by host:{} username:{}",host,username);
session = jsch.getSes

本文介绍了一个基于SFTP的文件操作工具类实现,包括文件上传、下载、删除等功能,并提供了具体的代码示例及RESTful API接口。
最低0.47元/天 解锁文章
1768

被折叠的 条评论
为什么被折叠?



