zoukankan      html  css  js  c++  java
  • 上传文件到Ftp服务器FtpClientFile工具类

    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;
    
        }
    
    
    
    
    
    }
  • 相关阅读:
    Atitit 常用比较复杂的图像滤镜 attilax大总结
    Atitit usrQBM1603短信验证码规范
    Atitit usrQBM2331 参数格式化规范
    Atitit 函数式编程与命令式编程的区别attilax总结  qbf
    atitit 短信接口规范与短信解决方案.docx
    atitit  验证码理论与概览与 验证码规范 解决方案.docx
    Atiti  attilax主要成果与解决方案与案例rsm版 v4
    Atitit 作用域的理解attilax总结
    Atitit cms
    Atitit 图片 验证码生成attilax总结
  • 原文地址:https://www.cnblogs.com/su-ke/p/14155389.html
Copyright © 2011-2022 走看看