Springboot文件上传至FTP服务器

99 阅读1分钟

Springboot文件上传至FTP服务器

1. 引入依赖

在pom.xml中引入Apache Commons Net依赖,它是专门处理FTP操作的一个库

<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>3.10.0</version>
</dependency>

2. 自定义FTP配置

  1. 首先在application.xml中添加FTP服务器相关配置
ftp: 
    server: ftp.example.com 
    port: 21 
    user: ftpusername 
    password: ftppassword
  1. 创建配置实体类FTPConfig,用于配置服务器连接相关参数信息
@Configuration
@ConfigurationProperties(prefix = "ftp")
public class FTPConfig {

    private String server;
    private int port;
    private String user;
    private String password;

    // Getters and Setters
    public String getServer() {
        return server;
    }

    public void setServer(String server) {
        this.server = server;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

3. 编写FTPUtils工具类

public class FTPUtils {

    public void uploadFile(String remotePath, MultipartFile file) throws IOException {
        FTPClient ftpClient = new FTPClient();
        FTPConfig ftpConfig = new FTPConfig();
        try {
            ftpClient.connect(ftpConfig.getServer(), ftpConfig.getPort());
            ftpClient.login(ftpConfig.getUser(), ftpConfig.getPassword());
            ftpClient.enterLocalPassiveMode();
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

            try (InputStream inputStream = file.getInputStream()) {
                boolean done = ftpClient.storeFile(remotePath, inputStream);
                if (done) {
                    System.out.println("File " + file.getOriginalFilename() + " has been uploaded successfully.");
                } else {
                    throw new IOException("Failed to upload file " + file.getOriginalFilename());
                }
            }
        } finally {
            if (ftpClient.isConnected()) {
                ftpClient.logout();
                ftpClient.disconnect();
            }
        }
    }
}