第一步:
pom.xml文件中引入依赖包
<!-- FtpClient依赖包 -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>
第二步:
编写 ftp 上传文件工具类
package com.split.ftp;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.net.ftp.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.io.InputStream;
import java.util.Calendar;
import java.util.Date;
/**
* 类说明:文件上传下载工具类
*/
@Component
@Data
@Slf4j
public class FtpOperation {
public static final int imageCutSize = 300;
@Value("${ftp.username}")
private String userName;
@Value("${ftp.password}")
private String passWord;
@Value("${ftp.host}")
private String ip;
@Value("${ftp.port}")
private int port;
@Value("${ftp.filepath}")
private String CURRENT_DIR; // 文件存放的目录
public static final String DIRSPLIT = "/";
// 下载的文件目录
private String DOWNLOAD_DIR;
// ftp客户端
private FTPClient ftpClient = new FTPClient();
/**
* 功能:上传文件附件到文件服务器
*
* @param buffIn:上传文件流
* @param fileName:保存文件名称
* @param needDelete:是否同时删除
* @return
* @throws IOException
*/
public boolean uploadToFtp(InputStream buffIn, String fileName, boolean needDelete)
throws FTPConnectionClosedException, IOException, Exception {
boolean returnValue = false;
// 上传文件
try {
// 建立连接
connectToServer();
// 设置传输二进制文件
setFileType(FTP.BINARY_FILE_TYPE);
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
throw new IOException("failed to connect to the FTP Server:" + ip);
}