FTP文件上传到文件服务器

配置文件

#图片访问路径   nginx 静态资源配置
upload-server=http://47.104.216.12/images/

#图片服务器存放地址
upload-path=/usr/local/static/images/

# 图片服务器  ftp IP
ftp-host=47.104.216.12

# 图片服务器 ftp 端口
ftp-port=21

# 公司的 FTP服务器 用户名
ftp-username=root

# 公司的 FTP服务器 密码
ftp-password=njmolei098Az~+

#FTP服务器分为主动和被动模式
#主动:FTP 客户端 连接 FTP服务器21端口  、FTP 服务器用20端口和客户端 > 1023端口 进行数据传输
#被动:FTP 客户端 连接 FTP服务器21端口 、FTP服务器用大于1023端口和客户端  > 1023端口 进行数据传输

#设置ftp 客户端开放端口范围 最小值
ftp-min-port=6666

#f设置ftp 客户端开放端口范围 最大值  
ftp-max-port=8888

JAVA 工具类

package com.ningpai.third.common;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;


/**
 * ftp 工具类
 *
 * @author MENG
 * @version 2018/4/18
 * @see
 */
public class FtpUtils
{
    private static Logger logger = LoggerFactory.getLogger(FtpUtils.class);

    private static String encoding = "UTF-8";

    private FTPClient ftpClient;

    private String username;

    private String password;

    private String host;

    private String port;



    private String maxPort;

    private String minPort;

    public FtpUtils(String username, String password, String host, String port, String maxPort, String minPort)
    {
        this.username = username;

        this.password = password;

        this.host = host;

        this.port = port;

        this.minPort = minPort;

        this.maxPort = maxPort;
    }

    /**
     *
     * 连接Ftp服务器
     *
     *
     * @return
     */
    public  void connectFtp()
    {
        try
        {
            ftpClient.setControlEncoding(encoding);

            //连接
            ftpClient.connect(host, Integer.valueOf(port));

            // 登录
            ftpClient.login(username, password);

            //设置ftp客户端开发的端口
            ftpClient.setActivePortRange(Integer.valueOf(minPort),Integer.valueOf(maxPort));

            //将超时设置为5分钟  设置处理文件上载或下载时发送控制连接存活信息的等待时间。
            ftpClient.setControlKeepAliveTimeout(300);

            //5分钟 数据连接超时
            ftpClient.setDataTimeout(300000);

            logger.info("设置了 setDataTimeout");

            // 设置文件传输类型为二进制
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

            int reply = ftpClient.getReplyCode();

            // 验证是否登陆成功
            if (!FTPReply.isPositiveCompletion(reply))
            {
                ftpClient.disconnect();

                logger.error("FTP服务器 登录失败!!!请检查用户名和密码 username:{},password:{}",username,password);
            }
        }
        catch (IOException e)
        {
            logger.error("FTP 服务器连接失败!!! ip:{},port:{},username:{},password:{}",new String[]{host,port+"",username,password});
        }

    }

    /**
     * 关闭Ftp连接
     *
     * @throws IOException
     */
    public void closeFptConnect()
    {
        if(ftpClient != null)
        {
            try
            {
                ftpClient.logout();

                logger.info("FTP 服务器登出......");
            }
            catch (IOException e)
            {
                logger.error("FTP 服务器登出失败!!!",e);
            }
        }

        if(ftpClient.isConnected())
        {
            try
            {
                ftpClient.disconnect();

                logger.info("FTP 服务器连接关闭......");
            }
            catch (IOException e)
            {
                logger.error("FTP 服务器连接关闭失败!!!",e);
            }
        }
    }
    /**
     * 将文件上传 spring
     */
    public void uploadMultipartFile(MultipartFile file, String newFileName, String uploadPath)
        throws IOException
    {
        InputStream inputStream = null;

        inputStream = file.getInputStream();

        ftpClient.makeDirectory(uploadPath);

        ftpClient.changeWorkingDirectory(uploadPath);

        ftpClient.storeFile(newFileName, inputStream);

        inputStream.close();
    }
    /**
     * 将本地文件上传
     */
    public void uploadFile(File file, String newFileName, String uploadPath)
        throws IOException
    {
        InputStream inputStream = null;

        inputStream = new FileInputStream(file);

        ftpClient.makeDirectory(uploadPath);

        ftpClient.changeWorkingDirectory(uploadPath);

        ftpClient.storeFile(newFileName, inputStream);

        inputStream.close();
    }

    /**
     * 连接上传图片服务器的ftp
     */
    public static FtpUtils connectUploadImageServer()
    {
        Properties properties = PropertiesUtils.readUploadProperties();

        FtpUtils ftpUtils = new FtpUtils(properties.getProperty("ftp-username"),properties.getProperty("ftp-pasword"),properties.getProperty("ftp-host"),properties.getProperty("ftp-port"),properties.getProperty("ftp-max-port"),properties.getProperty("ftp-min-port"));

        return ftpUtils;
    }

}


你可能感兴趣的:(FTP文件上传到文件服务器)