因项目功能需要实现linux至linux服务器上传文件,如下代码是网上参考另一位博文的,该实现是基于ssh协议,新测上传可用。由于本地文件存的是不带后缀的,因此我就先本地临时拷贝一份带后缀的再调用上传(如果文件有后缀就可以直接上传)。
package com.***.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.Vector;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.io.FilenameUtils;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.ChannelSftp.LsEntry;
import com.strongit.form.vo.FormProperty;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
/**
* SFTP帮助类
* @author htt
*
*/
public class SFTPUtil {
private static Log log = LogFactory.getLog(SFTPUtil.class);
/**
* 连接sftp服务器
* @param host 远程主机ip地址
* @param port sftp连接端口,null 时为默认端口
* @param user 用户名
* @param password 密码
* @return
* @throws JSchException
*/
public static Session connect(String host, Integer port, String user, String password) throws JSchException{
Session session = null;
try {
JSch jsch = new JSch();
if(port != null){
session = jsch.getSession(user, host, port.intValue());
}else{
session = jsch.getSession(user, host);
}
session.setPassword(password);
//设置第一次登陆的时候提示,可选值:(