springBoot整合ftp上传图片功能

知识点:

       springBoot后端项目,接收前端框架传到的图片,把图片上传到ftp图片服务器上

注意:在上传的过程中可能回出现,可以创建文件夹,但是图片上传不了的问题;

尝试了网上的很多方法,最后将filename改为全路径上传成功

 

1. pom.xml中引入依赖的包

<!-- 加入上传文件组件 -->
<!-- https://mvnrepository.com/artifact/commons-net/commons-net -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>


2.ftp上传工具类FtpFileUtil.java
package com.hand.hand.util;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

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

/**
* Created by nishuai on 2018/1/12.
*/
public class FtpFileUtil {

//ftp服务器ip地址
private static final String FTP_ADDRESS = "101.132.1.113";
//端口号
private static final int FTP_PORT = 21;
//用户名
private static final String FTP_USERNAME = "ftp";
//密码
private static final String FTP_PASSWORD = "123456";
//图片路径
private static final String FTP_BASEPATH = "/home/ftpadmin/health/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;
}

}



3.controller层接口 FtpFileUploadController.java
package com.hand.hand.controller;
import com.hand.hand.util.FtpFileUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;


/**
* Created by nishuai on 2017/12/26.
*/
@CrossOrigin
@Controller
public class FtpFileUploadController {

//ftp处理文件上传
@RequestMapping(value="/ftpuploadimg", method = RequestMethod.POST)
public @ResponseBody String uploadImg(@RequestParam("file") MultipartFile file,
HttpServletRequest request) throws IOException {

String fileName = file.getOriginalFilename();
InputStream inputStream=file.getInputStream();
String filePath=null;



Boolean flag=FtpFileUtil.uploadFile(fileName,inputStream);
if(flag==true){
System.out.println("ftp上传成功!");
filePath=fileName;
}


return filePath; //该路径图片名称,前端框架可用ngnix指定的路径+filePath,即可访问到ngnix图片服务器中的图片
}


}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
springboot整合ftp可以通过引入相关的依赖和配置来实现。首先,在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-net</artifactId> <version>3.6</version> </dependency> ``` 然后,在application.properties或application.yml文件中配置ftp连接信息,例如: ``` ftp.host=ftp.example.com ftp.port=21 ftp.username=admin ftp.password=123456 ``` 接下来,创建一个FTP工具类,用于连接和操作ftp服务器。在该类中,可以使用`FTPClient`类进行ftp操作,例如上传文件、下载文件等。示例如下: ```java import org.apache.commons.net.ftp.FTPClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class FTPUtil { @Value("${ftp.host}") private String host; @Value("${ftp.port}") private int port; @Value("${ftp.username}") private String username; @Value("${ftp.password}") private String password; public void uploadFile(String remotePath, String fileName, File file) throws IOException { FTPClient ftpClient = new FTPClient(); try { ftpClient.connect(host, port); ftpClient.login(username, password); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); ftpClient.enterLocalPassiveMode(); ftpClient.changeWorkingDirectory(remotePath); try (InputStream inputStream = new FileInputStream(file)) { ftpClient.storeFile(fileName, inputStream); } } finally { if (ftpClient.isConnected()) { ftpClient.disconnect(); } } } // 其他ftp操作方法... } ``` 最后,可以在其他地方注入`FTPUtil`类,并调用其方法来实现ftp操作。例如: ```java @Service public class MyService { private final FTPUtil ftpUtil; @Autowired public MyService(FTPUtil ftpUtil) { this.ftpUtil = ftpUtil; } public void uploadFile() { // 上传文件 File file = new File("path/to/file"); try { ftpUtil.uploadFile("remote/path", "filename.txt", file); } catch (IOException e) { e.printStackTrace(); } } // 其他方法... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值