欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

FTP工具类

程序员文章站 2022-05-29 20:03:26
...
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.n3r.quartz.glass.log.joblog.JobLogs;

import java.io.IOException;
import java.io.InputStream;

/**
 * Created by _wangcx on 2018/3/22
 */

public class DataFtpUtils {
    public static boolean uploadFile(String host, String port, String username, String password, String basePath,
                                      String filename, InputStream input) {
        boolean result = false;
        FTPClient ftp = new FTPClient();
        try {
            int reply;
            if(StringUtils.isNotBlank(port)){
                ftp.connect(host,Integer.valueOf(port));// 连接FTP服务器
            }else{
                ftp.connect(host);// 连接FTP服务器
            }

            // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
            ftp.login(username, password);// 登录
            reply = ftp.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                JobLogs.info("--FTP连接失败--");
                ftp.disconnect();
                return result;
            }
            //切换到上传目录

            if (!ftp.changeWorkingDirectory(basePath)) {
                JobLogs.info("--FTP:目录不存在--");
            }else{
                ftp.changeWorkingDirectory(basePath);
            }

            //设置上传文件的类型为二进制类型
            ftp.setFileType(FTP.BINARY_FILE_TYPE);
            //上传文件
            if (!ftp.storeFile(filename, input)) {
                JobLogs.info("--FTP:上传失败--");
                return result;
            }
            input.close();
            ftp.logout();
            result = true;
            JobLogs.info("--FTP:上传成功--");
        } catch (IOException e) {
            JobLogs.error("--FTP:上传失败--",e);
            e.printStackTrace();
        } finally {
            if (ftp.isConnected()) {
                try {
                    ftp.disconnect();
                } catch (IOException ioe) {
                    JobLogs.error("--FTP:disconnect 失败--",ioe);
                }
            }
        }
        return result;
    }
}