java通过sftp传输文件到指定服务器目录下

Java实现SFTP文件传输到服务器
这篇博客介绍了如何使用Java通过SFTP协议将文件安全地传输到远程服务器的指定目录下,涉及到的关键技术包括SFTP接口操作和可能的URL配置调整。

工具类如下

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软链接配置,看需求自行设置即可

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值