ftp服务器。当时学的是FastDFS ,上班用的ftp,不知道以后会不会用到
public class FtpUtils{
protected static Logger logger = LoggerFactory.getLogger(FtpUtils.class);
//1.获得链接
public static FTPClient getConnectionFTP(String hostName ,int port, String username, String password ) throws Exception{
//创建FTP客户端--连接FTP服务器--登录ftp
FTPClient ftp = new FTPClient();
ftp.connect(hostName,port);
//下面三行代码必须要,而且不能改变编码格式,否则不能正确下载中文文件
String LOCAL_CHARSET = "GBK";
if( FTPReply.isPositiveCompletion( ftp.sendCommand("OPTS UTF8","OFF") ) ){
//开启服务器对UTF-8的支持,如果服务器支持就用UTF-8编码
LOCAL_CHARSET = LOCAL_CHARSET ;
}
ftp.setControlEncoding(LOCAL_CHARSET );
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig .SYST_UNIX);
conf.setServerLanguageCode("zh");
ftp.configure(conf);//应用配置
if( ! ftp.login(username, password) ){
logger.info(String.format("FTP 用户名:%s 密码:%s",username,password));
ftp.logout();
throw new Exception("登录FTP服务器失败");
}
if( !FTPReply.isPositiveCompletion( ftp.getReplyCode() ) ){
ftp.disconnect();
throw new Exception("FTP服务器响应失败");
}
logger.info("FTPUtil getConnectionFTP method id =>登录服务器成功!");
returnftp;
}//1号方法尾
//2:关闭连接
public static void closeFTP(FTPClient ftp)throws Exception{
if(ftp == null) return ;
if(ftp.isConnected()){
ftp.disconnect();
logger.info("FTPUtil closeFTP method id =>ftp已经关闭");
}
}
//3:上传文件-ftp方式
public static void uploadFile(FTPClient ftp, String path,String fileName,InputStream inputStream) throws Exception{
try{
logger.info("----------------ftpPath =>>"+path);
ftp.changeWorkingDirectory(path);//转移到指定FTP服务器目录
//将文件上传到指定目录
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.setFileTransferMode(FTP.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();
//如果缺少该句 传输txt正常 但图片和其他格式的文件传输出现乱码
boolean ret = ftp.storeFile(new String(fileName.getBytes("GBK"),"ISO-8859-1"),“inputStream”);
if(! ret){ throw new Exception("文件上传失败");}
//表示上传成功
logger.info("FTPUtil uploadFile method id =>上传成功。。。。。。");
}catch(Exception e){
e.printStackTrace();
logger.info("FTPUtil uploadFile method id =>上传失败!"+e.toString());
throw e;
}finally{
//关闭输入流
inputStream.close();
//退出ftp
ftp.logout();
}
}
//4:多文件上传-多输入流,重载方法
public static void uploadFile(FTPClient ftp,