1个回答
test
2024-07-03
先在项目里引入 Apache Commons Net 依赖:
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.8.0</version>
</dependency>
然后写一个上传 InputStream 到 FTP 的方法:
import org.apache.commons.net.ftp.FTPClient;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class FtpUtils {
public static void uploadExcelToFTP(OutputStream outputStream, String ftpHost, int ftpPort, String ftpUser, String ftpPassword, String remotePath, String fileName) {
FTPClient ftpClient = new FTPClient();
try {
// 连接到 FTP 服务器
ftpClient.connect(ftpHost, ftpPort);
// 登录 FTP
ftpClient.login(ftpUser, ftpPassword);
// 设置文件类型为二进制,防止文件损坏
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
// 切换工作目录
ftpClient.changeWorkingDirectory(remotePath);
// 将 OutputStream 转换为 InputStream
ByteArrayInputStream inputStream = new ByteArrayInputStream(((ByteArrayOutputStream) outputStream).toByteArray());
// 上传文件到 FTP
ftpClient.storeFile(fileName, inputStream);
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ftpClient.logout();
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
ByteArrayOutputStream:
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
EasyExcel.write(outputStream, YourDataClass.class).sheet("sheetName").doWrite(dataList);
最后你再调用 uploadExcelToFTP 方法上传 Excel就好了:
FtpUtils.uploadExcelToFTP(outputStream, ftpHost, ftpPort, ftpUser, ftpPassword, remotePath, fileName);
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容