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 服务器,方便文件的存储和共享。

相关内容

热门资讯

推荐一下!青橙竞技卡五星辅助,... 推荐一下!青橙竞技卡五星辅助,新518互游脚本下载,好像是真的有挂(哔哩哔哩)青橙竞技卡五星辅助透视...
总结一下!老友广东麻将辅助,杭... 总结一下!老友广东麻将辅助,杭州都莱辅助,切实真的是有挂(哔哩哔哩)1、在老友广东麻将辅助插件功能辅...
解迷一下!创思维激k怎么开挂,... 解迷一下!创思维激k怎么开挂,创思维辅助软件,切实真的有挂(哔哩哔哩)1、创思维激k怎么开挂辅助器安...
辅助一下!微信微乐游戏辅助脚本... 辅助一下!微信微乐游戏辅助脚本,拱趴大菠萝有辅助吗,总是有挂(哔哩哔哩)辅助一下!微信微乐游戏辅助脚...
辅助一下!时光互娱房卡辅助,新... 辅助一下!时光互娱房卡辅助,新漫游免费辅助器,本来真的有挂(哔哩哔哩)1、让任何用户在无需时光互娱房...
关于一下!多乐跑得快私人房间作... 关于一下!多乐跑得快私人房间作弊视频,来来拼十辅助,都是真的有挂(哔哩哔哩)1、打开软件启动之后找到...
教你一下!卡五星游戏源码,决战... 教你一下!卡五星游戏源码,决战卡五星辅助器,其实是有挂(哔哩哔哩)1)决战卡五星辅助器辅助插件:进一...
普及一下!同乡游有辅助软件码,... 普及一下!同乡游有辅助软件码,老友广东辅助器,总是是有挂(哔哩哔哩)1、上手简单,内置详细流程视频教...
曝光一下!创思维激k有辅助器吗... 曝光一下!创思维激k有辅助器吗,hhpoker辅助是真的吗,好像存在有挂(哔哩哔哩)创思维激k有辅助...
总结一下!边锋干瞪眼小程序辅助... 总结一下!边锋干瞪眼小程序辅助,心悦踢辅助软件,真是存在有挂(哔哩哔哩)1、这是跨平台的边锋干瞪眼小...