/**
 * Description: 向FTP服务器上传文件
 * @param ftpPath FTP服务器文件存放路径
 * @param multipartFile 上传到FTP服务器上的文件
 * @return 成功返回文件名,比如 uuid.jpg,失败返回null
 */
public String uploadFileToFtpService(String ftpPath, MultipartFile multipartFile) {
    //截取文件格式后缀
    String fileSuffix = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".") + 1);
    //uuid.格式 是文件名
    String fileName = UUID.randomUUID() + "."+fileSuffix;
    FTPClient ftpClient=null;
        try {
            //连接ftp
            ftpClient = getFTPConnection();
            if(ftpClient==null){
                logger.error("ftp服务器连接失败");
                return null;
            }
            /*该部分为逐级创建,并切换到工作目录*/
            String[] split = ftpPath.split("/");
            for (String str : split) {
                if(StringUtils.isBlank(str)) {
                    continue;
                }
                if (!ftpClient.changeWorkingDirectory(str)) {//注意这步必须加上进入目录,否则当目录不存在时候只创建目录不进入则文件写入有问题
                    //防止中文编码导致目录找不到
                    String directory  = new String(str.getBytes("UTF-8"),"iso-8859-1");
                    //目录不存在则创建目录
                    ftpClient.makeDirectory(directory);
                    //更换目录到当前目录,否则目录不存在时只是创建目录而不能写入文件到该目录
                    ftpClient.changeWorkingDirectory(directory);
                }
            }
            ftpClient.enterLocalPassiveMode();//工作模式被动
            InputStream input = multipartFile.getInputStream();
            //文件写入 远程文件名;输入流
            boolean storeFile = ftpClient.storeFile(fileName, input);
            if (!storeFile) {
                return null;
            }
            input.close();
            ftpClient.logout();
        } catch (IOException e) {
            logger.error(e.getMessage());
            return null;
        } finally {
            if (ftpClient.isConnected()) {
                try {
                    ftpClient.disconnect();
                } catch (IOException ioe) {
                }
            }
        }
        return fileName;
    }
/**
 * 连接FTP服务器
 * @return
 */
private FTPClient getFTPConnection(){
    try {
        //创建ftp客户端
        FTPClient ftpClient = new FTPClient();
        //FTP服务器端口,默认21,使用默认端口可以不写
        ftpClient.connect(ftpHost,Integer.parseInt(ftpPort));// 连接FTP服务器
        // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
        ftpClient.login(ftpUsername, ftpPassword);// 登录
        if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
            logger.info("登录成功");
            ftpClient.setControlEncoding(LOCAL_CHARSET);
            ftpClient.enterLocalPassiveMode();//设置被动模式
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//设置传输模式,一定要设置二进制传输格式
            return ftpClient;
        }else{
            //登录失败返回Null
            ftpClient.disconnect();
            return null;
        }
    } catch (IOException e) {
        return null;
    }
}