工具类如下
package cn.sd2.common.utils;
import java.util.Properties;
import org.springframework.web.multipart.MultipartFile;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
public class SftpClientUtil {
/** 主机 */
private final static String host = "1.1.1.1";
/** 端口 */
private final static int port = 22;
/** 用户名 */
private final static String username = "account";
/** 密码 */
private final static String password = "password";
/** 目录 */
private final static String directory = "/upload/file";
/** url地址 */
private final static String baseUrl = "https://myurl/static/file/";
/**
* 上传单个文件
*
* @param directory
* 上传的目录
* @param uploadFile
* 要上传的文件
*
* @throws Exception
*/
public static String upload(MultipartFile file) throws Exception {
ChannelSftp sftp = connect();
sftp.cd(directory);
sftp.put(file.getInputStream(), file.getOriginalFilename());
disconnect(sftp);
return baseUrl + file.getOriginalFilename();
}
/**
* 删除文件
*
* @param directory
* 要删除文件所在目录
* @param deleteFile
* 要删除的文件
*
* @throws Exception
*/
public void delete(String deleteFile) throws Exception {
ChannelSftp sftp = connect();
sftp.cd(directory);
sftp.rm(deleteFile);
disconnect(sftp);
}
/**
* 连接sftp服务器
*
* @throws Exception
*/
public static ChannelSftp connect() throws Exception {
JSch jsch = new JSch();
Session sshSession = jsch.getSession(username, host, port);
sshSession.setPassword(password);
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
sshSession.connect(20000);
Channel channel = sshSession.openChannel("sftp");
channel.connect();
return (ChannelSftp) channel;
}
/**
* Disconnect with server
*
* @throws Exception
*/
public static void disconnect(ChannelSftp sftp) throws Exception {
if (sftp != null) {
if (sftp.isConnected()) {
sftp.disconnect();
} else if (sftp.isClosed()) {
}
}
}
}
访问url做了nginx和linux软链接配置,看需求自行设置即可
Java实现SFTP文件传输到服务器
这篇博客介绍了如何使用Java通过SFTP协议将文件安全地传输到远程服务器的指定目录下,涉及到的关键技术包括SFTP接口操作和可能的URL配置调整。
2万+

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



