spring-boot - Ftp 出站适配器 | 无法写入 ftp
问题描述
@EnableIntegration
@Configuration
public class RtwEmploymentComplianceFlow {
@Bean
DefaultFtpSessionFactory rtwFtpFileSessionFactory() {
DefaultFtpSessionFactory sf = new DefaultFtpSessionFactory();
sf.setPort(21);
sf.setUsername("a-asdf");
sf.setPassword("asdf@123");
sf.setHost("asdf.ftp.org");
return sf;
}
@Autowired
TiffToPdfConverter tiffToPdf;
@Bean
public IntegrationFlow rtwFlow(
@Value("${rtw-input-directory}") File rtwFolder, DefaultFtpSessionFactory rtwFtpFileSessionFactory) {
GenericTransformer<File, Message<String>> pdfFileConverter = (File source) -> {
return MessageBuilder.withPayload("hello").setHeader(FileHeaders.FILENAME, source.getName().split("\\.")[0] + ".txt").build();
};
return IntegrationFlows
.from(Files.inboundAdapter(rtwFolder)
.autoCreateDirectory(true)
.preventDuplicates(true)
.patternFilter("*.tif"),
poller -> poller.poller(pm -> pm.fixedDelay(1000)))
.transform(File.class, pdfFileConverter)
.handle(Ftp.outboundAdapter(rtwFtpFileSessionFactory)
.remoteDirectory("Guru")
.useTemporaryFileName(false)
.fileNameGenerator(message -> {
Object o = message.getHeaders().get(FileHeaders.FILENAME);
String fileName = String.class.cast(o);
System.out.println("output FileName is: " + fileName);
return fileName;
})
)
.get();
}
}
上面的代码开始在 ftp 站点创建一个 sample.txt.writing 文件,但大小保持 0KB 大约 15 秒,然后文件消失。
没有提出任何例外。
不知道为什么 ftp 无法完全写入文件。请帮忙。
提前致谢。
解决方案
感谢加里的反馈。
最后通过以下方式解决:
- factory.setClientMode(2) -- 被动模式
- 防火墙(Windows 防火墙),允许 0-65000 个端口(出站)用于 ftp 服务器上的 TCP
像魅力一样工作。
推荐阅读
- perl - Perl 对象错误:无法通过包“Statistics::Sequences::Runs”定位对象方法“dump_data”
- python - 通常无法在 Pycharm 上安装 pygame 和软件包
- tensorflow - FCN中Conv2DTranspose层的问题
- quicksort - APL中快速排序的解释
- r - 官员 r 包用于创建具有并排内容的幻灯片 - 内容仅出现在一个部分中
- android - 使用 android EncryptedSharedPreference 的最低 API 级别?
- uikit - 使自定义 SwiftUI 视图适应内置修饰符
- java - 密码和用户名存储在 Apache Ignite 中的什么位置?
- c# - HTMLAgilityPack InnerHTML,解析错误错误
- flutter - 如何解决 OS 错误:Permission denied, errno = 13 in flutter