Spring Boot整合FTP实现上传图片或文件

简介

jquery 通过 ajax 调用 spring boot 后台方法,实现图片或文件上传到 ftp 服务器

第一步:

pom.xml文件中引入依赖包



	commons-net
	commons-net
	3.3

第二步:

编写 ftp 上传文件工具类

package com.ruoyi.framework.util;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

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

/**
 * @Description:ftp文件上传工具类
 * @author Wang JinLei
 * @date 2019年5月14日 上午9:51:26
 */
public class FTPFileUploadUtils {

	//ftp服务器ip地址
    private static final String FTP_ADDRESS = "192.168.1.110";
    //端口号
    private static final int FTP_PORT = "21";
    //用户名
    private static final String FTP_USERNAME = "aaa";
    //密码
    private static final String FTP_PASSWORD = "aaa";
    //图片路径
    private static final String FTP_BASEPATH = "/images/";
    
    public static boolean uploadFile(String originFileName, InputStream input){
        boolean success = false;
        FTPClient ftp = new FTPClient();
        ftp.setControlEncoding("GBK");
        try {
            int reply;
            ftp.connect(FTP_ADDRESS, FTP_PORT);// 连接FTP服务器
            ftp.login(FTP_USERNAME, FTP_PASSWORD);// 登录
            reply = ftp.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftp.disconnect();
                return success;
            }
            ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
            ftp.makeDirectory(FTP_BASEPATH );
            ftp.changeWorkingDirectory(FTP_BASEPATH );
            ftp.storeFile(originFileName,input);
            input.close();
            ftp.logout();
            success = true;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (ftp.isConnected()) {
                try {
                    ftp.disconnect();
                } catch (IOException ioe) {
                }
            }
        }
        return success;
    }
}

第三步:

编写 Controller

package com.ruoyi.web.api;

import java.io.InputStream;
import java.util.UUID;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.ruoyi.common.annotation.Log;
import com.ruoyi.framework.util.FTPFileUploadUtils;

/**
 * @Description:ftp文件上传类
 * @author Wang JinLei
 * @date 2019年5月14日 上午9:51:26
 */
@Controller
@RequestMapping("/system/data")
public class FTPFileUploadController {
	
    @PostMapping("/updateAvatar")
    @ResponseBody
    public String updateAvatar(MultipartFile file){
        try{
            if (!file.isEmpty()){
            	//获取图片或文件的后缀名
            	String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
            	//拼接图片或文件名称,32位随机uuid+后缀名
            	String fileName = UUID.randomUUID().toString().replace("-", "").toLowerCase() + suffix;
                InputStream inputStream = file.getInputStream();
                //调用ftp上传文件工具类,返回true成功,返回false失败
                Boolean flag = FTPFileUploadUtils.uploadFile(fileName,inputStream);
                if(flag == true){
                		//这里按功能需求做相应处理即可
                        return "上传成功";
                    }
                }
            }
            return "上传失败";
        } catch (Exception e){
            return "上传异常";
        }
    }
}

你可能感兴趣的:(我的原创)