public class FtpClientFile { /** * log */ private static final Logger log = LoggerFactory.getLogger(FtpClientFile.class); private static final String hostname = "" ;//FTP IP private static final int port = ;//FTP 端口号 private static final String username = "";//FTP 登录账号 private static final String password = ""; //FTP 登录密码 private static final String pathname = "";//FTP 工作路径 /** * 上传文件(可供Action/Controller层使用) * @param fileName 上传到FTP服务器后的文件名称 * @param inputStream 输入文件流 * @return */ public static boolean uploadFile(String fileName, FileInputStream inputStream){ boolean flag = false; FTPClient ftpClient = new FTPClient(); //设置超时 ftpClient.setConnectTimeout(60*60*1000); //设置编码 ftpClient.setControlEncoding("UTF-8"); try { //连接FTP服务器 log.info("连接服务器"); ftpClient.connect(hostname, port); //登录FTP服务器 log.info("登录服务器"); ftpClient.login(username, password); //是否成功登录FTP服务器 int replyCode = ftpClient.getReplyCode(); if(!FTPReply.isPositiveCompletion(replyCode)){ log.error("登录服务器失败"); return flag; } log.info("登录服务器成功"); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); //切换路径 创建路径 ftpClient.makeDirectory(pathname); ftpClient.changeWorkingDirectory(pathname); ftpClient.enterLocalPassiveMode(); //设置缓冲 ftpClient.setBufferSize(1024 * 1024 * 20); //保持连接 ftpClient.setKeepAlive(true); boolean a = ftpClient.storeFile(new String(fileName.getBytes("utf-8"),"iso-8859-1"), inputStream); if(a){ log.info("创建文件成功"+a); String fileName2 = fileName; boolean status = ftpClient.rename(fileName, fileName2); if(status) log.info("修改文件名称成功"+status); inputStream.close(); ftpClient.logout(); flag = true; }else{ flag = false; } } catch (Exception e) { e.printStackTrace(); } finally{ if(ftpClient.isConnected()){ try { ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } return flag; } }