马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
spring boot 毗连FTP实现文件上传
maven:- <!--ftp-->
- <dependency>
- <groupId>commons-net</groupId>
- <artifactId>commons-net</artifactId>
- <version>3.8.0</version>
- </dependency>
复制代码 接口示例:- @ApiOperation(value="上传文件到FTP")
- @PostMapping("/fileUploadFTP")
- public Boolean uploadFileToFtp(@RequestParam("file") MultipartFile file) {
- boolean flag = uploadFile("192.168.2.128",21,file,"user","123456","/");
- return false;
- }
复制代码 方法:- public static boolean uploadFile(String url, int port, MultipartFile file,String username,
- String password, String path) {
- FTPClient ftpClient = new FTPClient();
- boolean result = false;
- try {
- String filename = file.getOriginalFilename();
- // 连接到FTP服务器
- ftpClient.connect(url, port);
- // 登录
- boolean login = ftpClient.login(username, password);
- if (!login) {
- System.out.println("FTP 登录失败");
- return result;
- }
- // 设置控制编码(处理中文文件名)
- ftpClient.setControlEncoding("UTF-8");
- // 检查是否成功连接
- int replyCode = ftpClient.getReplyCode();
- if (!FTPReply.isPositiveCompletion(replyCode)) {
- System.out.println("连接失败,FTP 服务器返回错误:" + replyCode);
- return result;
- }
- // 切换到指定的目录
- boolean changeDir = ftpClient.changeWorkingDirectory(path);
- if (!changeDir) {
- System.out.println("目标目录不存在或没有权限:" + path);
- // 尝试创建目标目录
- if (ftpClient.makeDirectory(path)) {
- System.out.println("创建目录成功:" + path);
- } else {
- System.out.println("无法创建目录:" + path);
- return false;
- }
- }
- // 设置文件类型(二进制文件类型,适用于所有类型的文件)
- ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
- try (InputStream fis = file.getInputStream()) {
- // 上传文件
- String encodedFilename = new String(filename.getBytes("UTF-8"), "ISO-8859-1");
- result = ftpClient.storeFile(encodedFilename, fis);
- if (result) {
- System.out.println("文件上传成功!");
- } else {
- replyCode = ftpClient.getReplyCode();
- String replyMessage = ftpClient.getReplyString();
- System.out.println("上传失败,FTP 回复: " + replyCode + " " + replyMessage);
- }
- }
- // 退出
- ftpClient.logout();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- // 断开与服务器的连接
- if (ftpClient.isConnected()) {
- ftpClient.disconnect();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return result;
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |