java工具类(SFTP上传文件到服务器)

package com.utils;

import com.jcraft.jsch.*;

import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

/**
 * Author:
 * Date:
 * Description:
 * 创建ChannelSftp对象,编写一个工具类,根据ip,
 * 用户名及密码得到一个SFTP channel对象,即ChannelSftp的实例对象,
 * 在应用程序中就可以使用该对象来调用SFTP的各种操作方法。
 */
public class SFTPUtils {
    public static String sftpPut(String host, String port, String username, String password, String uploadDir, InputStream in, String fileName) {
        ChannelSftp sftp = null;
        String subDir = null;
        String filePath = null;
        try {
            //1.获取会话
            JSch jSch = new JSch();
            int i = Integer.parseInt(port);
            Session session = jSch.getSession(username, host, i);
            session.setPassword(password);
            Properties properties = new Properties();
            properties.put("StrictHostKeyChecking", "no");
            session.setConfig(properties);
            session.connect();

            //2.获取上传的管道
            Channel channel = session.openChannel("sftp");
            channel.connect();
            sftp = (ChannelSftp) channel;

            //3.切换目录
            SimpleDateFormat dataFormat = new SimpleDateFormat("yyyyMMdd");
            subDir = dataFormat.format(new Date());
            try {
                filePath = uploadDir + "//" + subDir;
                sftp.cd(uploadDir + "//" + subDir);
            } catch (SftpException e) {
                //目录不存在,新建目录
                try {
                    filePath = uploadDir + "//" + subDir;
                    sftp.mkdir(uploadDir + "//" + subDir);
                    sftp.cd((uploadDir + "//" + subDir));
                } catch (SftpException e1) {

                }
            }

            //4.上传
            sftp.put(in, fileName);

            //5.关闭
            sftp.disconnect();
            channel.disconnect();
            session.disconnect();

        } catch (Exception e) {

        }
        return filePath;
    }

}


//配置文件
sftp.SFTP_REQ_HOST=服务器地址
sftp.SFTP_REQ_PORT=22
sftp.sftp.SFTP_REQ_USERNAME=用户名
sftp.SFTP_REQ_PASSWORD=密码
sftp.uploadDir=服务器中的文件路径
 

你可能感兴趣的:(java)