Spring Boot:将文件推送到 FTP 服务器
创始人
2025-01-19 01:31:55
0次

在企业应用中,将文件推送到 FTP 服务器是一个常见的需求。本文将介绍如何在 Spring Boot 项目中实现将文件推送到 FTP 服务器,包括引入依赖、自定义配置和编写代码示例。

1. 引入依赖

首先,在 Spring Boot 项目的 pom.xml 文件中引入 Apache Commons Net 依赖,它是一个用于处理 FTP 操作的库:

     commons-net     commons-net     3.8.0  

2. 自定义 FTP 配置

创建一个配置类 FTPConfig,用于配置 FTP 连接的相关参数:

import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration;  @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;     } } 

在 application.yml 文件中添加 FTP 服务器的相关配置:

ftp:   server: ftp.example.com   port: 21   user: ftpuser   password: ftppassword 

3. 实现 FTP 服务类

创建一个服务类 FTPService,用于连接 FTP 服务器并上传文件:

import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile;  import java.io.IOException; import java.io.InputStream;  @Service public class FTPService {      @Autowired     private FTPConfig ftpConfig;      public void uploadFile(String remotePath, MultipartFile file) throws IOException {         FTPClient ftpClient = new FTPClient();         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();             }         }     } } 

4. 编写控制器类

创建一个控制器类 FTPController,用于处理文件上传请求并调用 FTPService 进行文件上传:

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile;  import java.io.IOException;  @RestController public class FTPController {      @Autowired     private FTPService ftpService;      @PostMapping("/uploadFile")     public ResponseEntity uploadFile(@RequestParam("file") MultipartFile file) {         try {             String remotePath = "/uploads/" + file.getOriginalFilename();             ftpService.uploadFile(remotePath, file);             return new ResponseEntity<>("File uploaded successfully", HttpStatus.OK);         } catch (IOException e) {             return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);         }     } } 

完整代码结构

src ├── main │   ├── java │   │   └── com │   │       └── example │   │           └── ftp │   │               ├── FTPApplication.java │   │               ├── FTPConfig.java │   │               ├── FTPService.java │   │               └── FTPController.java │   └── resources │       └── application.yml 

测试上传文件到 FTP 服务器

启动 Spring Boot 应用程序,使用 Postman 或类似工具发送 POST 请求至以下 URL,并上传要推送到 FTP 服务器的文件:

POST http://localhost:8080/uploadFile 

请求参数:

file: 上传的文件。 

总结

通过本文,我们成功地在 Spring Boot 项目中实现了将文件推送到 FTP 服务器的功能。我们通过引入 Apache Commons Net 依赖、自定义 FTP 配置、创建 FTP 服务类和控制器类,实现了文件的上传和管理。这种方式可以帮助我们在各种应用场景中将文件高效地推送到 FTP 服务器,方便文件的存储和共享。

相关内容

热门资讯

今日重大通报!wepoker软... 很多人使用云端 AI 时,都担心wepoker软件辅助程序、内部资料上传带来隐私风险。这款本地运行的...
传递经验!wpk辅助哪里买,德... 本地部署 AI 黑科技工具迎来新版本,不用上传文件到云端就能完成wpk辅助哪里买解析、 AI 处理、...
我来教大家!!wpk私人局辅助... 一款 AI 游戏攻略黑科技工具上线,查攻略效率直接开挂。它整合版本更新、装备搭配、BOSS 打法、牌...
安装教程!wejoker私人辅... AI 黑科技赛道又上新,这款智能处理工具堪称效率开挂,专门面向短视频创作者打造。它打通脚本撰写、AI...
玩家必备教程!wpk辅助插件,... 您好,玩家必备教程!wpk辅助插件,wepoker开挂工具插件(先前存在有透视挂)这款游戏可以开挂的...
一分钟揭秘!德扑之心免费透视,... 一分钟揭秘!德扑之心免费透视,wepoker真的有挂教程(果然是真的有开挂)AI 是一款可以让一直输...
重大通报!德扑圈有透视吗,德普... 您好:德扑圈有透视吗这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特...
一分钟揭秘!德普之星有辅助软件... 德普之星有辅助软件吗AI 游戏攻略黑科技上线本地缓存功能,离线查阅能力开挂。提前下载对应游戏攻略数据...
热点推荐!wepoker辅助真... 『标题:当前标题』主打赛后复盘的 AI 游戏攻略黑科技走红,对局总结能力开挂。上传对局回放或者战绩截...
详细教程!德普之星辅助器怎么用... 本地部署 AI 黑科技工具迎来新版本,不用上传文件到云端就能完成德普之星辅助器怎么用解析、 AI 处...