FTPUtil

<!-- ftpclient -->
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.1</version>
        </dependency>

一、config

//FTP服务器设置正式服务器(内网)
    public static final String IP = "192.168.2.134";//IP
    public static final String username = "Administrator";//用户名
    public static final String password = "dlxx_2020";//密码
    public static final int port = 21;//端口号
    public static final String path = "D:/java/file";//ftp根目录
    public static final String LOGIN_FTP_IMAGE = "/logincode";    //FTP文件服务器图片地址
    public static final String NGINX_IMAGE = "http://192.168.2.134:8082/";

二、工具类

package com.donglian.util;

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.StringTokenizer;

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.springframework.web.multipart.MultipartFile;

import com.donglian.config.CONF;

import net.coobird.thumbnailator.builders.BufferedImageBuilder;
import net.coobird.thumbnailator.resizers.Resizers;

/**
 * https://blog.csdn.net/zhangxiaomin1992/article/details/73644279
 * FTP文件上传工具类
 * @ClassName:  FtpUtils   
 * @author: fkx
 * @date:   2019年10月23日 下午5:39:25
 */
public class FtpUtils {
    /**  
     *     文件上传
     * @param mfile
     * @param path    文件路径
     * @param fileName    文件名称
     * @return
     */
    public static boolean uploadToFtp(MultipartFile mfile,String path,String fileName){
        FTPClient ftpClient = new FTPClient();
        try {
            //指定的服务器地址
            String ip = CONF.IP;
            //用户名
            String user = CONF.username;
            //密码
            String password = CONF.password;
            //服务器端口 默认22
            int port = CONF.port;
            //上传文件到指定服务器的指定目录自行修改
            //String path = CONF.path;
            //连接ftp服务器 参数填服务器的ip
            ftpClient.connect(ip,port);

            //进行登录 参数分别为账号 密码
            boolean istrue=ftpClient.login(user,password);
            if(!istrue){
                return false;
            }

            //在ftp文件服务器上创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建
            //                CreateDirecroty(ftpClient,path);
            createMkdirs(ftpClient,path);

            /*
             * 改变工作目录(按自己需要是否改变)
             * 只能选择local_root下已存在的目录
             */
            ftpClient.changeWorkingDirectory(path);

            System.out.println(ftpClient.printWorkingDirectory());

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

            //开启被动模式(按自己如何配置的ftp服务器来决定是否开启)
            //ftpClient.enterLocalPassiveMode();

            //                InputStream fileins = mfile.getInputStream();
            FileInputStream fileins = (FileInputStream) mfile.getInputStream();

            //上传文件 参数:上传后的文件名,输入流
            ftpClient.enterLocalPassiveMode();
            ftpClient.storeFile(fileName, fileins);
            //System.err.println("写入FTP图片服务器成功:"+file.getName());
            fileins.close();
            ftpClient.disconnect();
            //System.out.println(file.getName());
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

    public static void createMkdirs(FTPClient ftp, String path) {
        // ftp.makeDirectory(path);// 这个方法不会改变当前工作目录
        // 保证可以创建多层目录
        StringTokenizer s = new StringTokenizer(path, "/");
        s.countTokens();
        String pathName = "";
        while (s.hasMoreElements()) {
            pathName = pathName + "/" + (String) s.nextElement();
            try {
                ftp.mkd(pathName);
            } catch (Exception e) {

            }
        }
    }

    /**  
     * 文件上传
     * @param file
     * @param path  "/"+useridUtil.getRunitid()+"/"+useridUtil.getUname()
     * @return
     */
    public static boolean uploadToFtp(File file,String path){
        FTPClient ftpClient = new FTPClient();
        try {
            //指定的服务器地址
            String ip = CONF.IP;
            //用户名
            String user = CONF.username;
            //密码
            String password = CONF.password;
            //服务器端口 默认22
            int port = CONF.port;
            //上传文件到指定服务器的指定目录自行修改
            //String path = CONF.path;
            //连接ftp服务器 参数填服务器的ip
            ftpClient.connect(ip,port);

            //进行登录 参数分别为账号 密码
            boolean istrue=ftpClient.login(user,password);
            if(!istrue){
                return false;
            }

            //改变工作目录(按自己需要是否改变)
            //只能选择local_root下已存在的目录
            ftpClient.changeWorkingDirectory(path);

            //在ftp文件服务器上创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建
            CreateDirecroty(ftpClient,path);

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

            //开启被动模式(按自己如何配置的ftp服务器来决定是否开启)
            //ftpClient.enterLocalPassiveMode();

            FileInputStream fileins=new File

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值