JAVA上传文件到SFTP服务器

public void SftpUpload(String filePath, String sftpDirectory, String reportUrl, Integer sftpPort, String sftpUser, String sftpPassword, String name, String newName) {
            //filePath 本地压缩包路径 reportUrl服务器IP sftpPort 端口号 sftpUser账号 sftpPassword 密码 name 上传中目标服务器文件名称 newName上传完成后文件名称
            String sftpCatalogue = "/" + sftpDirectory + "/"; //上传服务器目录
            JSch jsch = new JSch();
            Session session = null;
            Channel channel = null;
            ChannelSftp channelSftp = null;

            try {
                // 建立SSH会话
                session = jsch.getSession(sftpUser, reportUrl, sftpPort);
                session.setConfig("StrictHostKeyChecking", "no");
                session.setPassword(sftpPassword);
                session.connect();

                // 开启SFTP通道
                channel = session.openChannel("sftp");
                channel.connect();
                channelSftp = (ChannelSftp) channel;

                // 将本地文件上传到服务器指定目录
                File file = new File(filePath);
                channelSftp.put(file.getAbsolutePath(),  sftpCatalogue + name);
//                channelSftp.put(filePath, sftpCatalogue + name);

                // 上传成功后 重命名服务器压缩包名称
                channelSftp.rename(sftpCatalogue + name, sftpCatalogue + newName);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                // 关闭通道和会话
                if (channelSftp != null) {
                    channelSftp.exit();
                }
                if (channel != null) {
                    channel.disconnect();
                }
                if (session != null) {
                    session.disconnect();
                }
            }
        }

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用JSch库来实现Java上传文件SFTP(SSH File Transfer Protocol)服务器。下面是一个简单的示例代码: ```java import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import com.jcraft.jsch.Channel; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; public class SftpUploader { public static void main(String[] args) { String host = "sftp.example.com"; int port = 22; String username = "your-username"; String password = "your-password"; String localFilePath = "/path/to/local/file.txt"; String remoteDir = "/path/to/remote/directory/"; try { JSch jsch = new JSch(); Session session = jsch.getSession(username, host, port); session.setConfig("StrictHostKeyChecking", "no"); session.setPassword(password); session.connect(); Channel channel = session.openChannel("sftp"); channel.connect(); ChannelSftp sftpChannel = (ChannelSftp) channel; File localFile = new File(localFilePath); InputStream inputStream = new FileInputStream(localFile); sftpChannel.put(inputStream, remoteDir + localFile.getName()); sftpChannel.disconnect(); session.disconnect(); System.out.println("File uploaded successfully."); } catch (Exception e) { e.printStackTrace(); } } } ``` 在代码中,你需要替换以下内容: - `host`: SFTP服务器的主机名或IP地址 - `port`: SFTP服务器的端口号(默认为22) - `username`: SFTP服务器的用户名 - `password`: SFTP服务器的密码 - `localFilePath`: 要上传的本地文件的路径 - `remoteDir`: 远程服务器上存储文件的目录路径 这段代码将建立与SFTP服务器的连接,然后使用`ChannelSftp`对象将本地文件上传到远程目录中。最后,它会输出"File uploaded successfully."来表示文件上传成功。 请确保在运行代码之前,你已经在项目的类路径中包含了JSch库的依赖。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值