Spring Integration:使用ftp:outbound-adapter创建动态目录

时间:2012-11-27 08:02:34

标签: spring-integration

我们希望能够在创建频道后更改频道上的FTP目录。在我们的特定用例中,FTP put的子目录在运行时确定。例如:我们有用户上传的每日报告。应该在日常文件夹中存储在ftp服务器中。例如:test/reports/27-11-2012/abc.pdftest/reports/28-11-2012/abc.pdf等。

一些像这样的

<int-ftp:outbound-channel-adapter id="ftpOutbound" channel="ftpChannel" remote-directory="remoteDirectoryPath" 
   session-factory="ftpClientFactory" />

remoteDirectoryPath - 它应该附加运行时

请有人给我们解决方案吗?

2 个答案:

答案 0 :(得分:1)

使用remote-directory-expression

@ beanName.method()目前在此表达式中不可用;您将需要使用SpEL来生成目录...

"'test' + T(java.io.File).separator + new java.text.SimpleDateFormat('yyyyMMDD').format(new java.util.Date())"

答案 1 :(得分:1)

您可以在运行时将目录/路径分配到ftp:outbound-channel-adapter。 我在这里处理数据。你可以看一下。 这对我有用。

xml方面:

<int-ftp:outbound-channel-adapter id="ftpOutboundAdapter" session-factory="ftpSessionFactory"
    channel="sftpOutboundChannel"
    remote-directory-expression="@targetDir.get()"
    remote-filename-generator="fileNameGenerator"/>

<bean id="targetDir" class="java.util.concurrent.atomic.AtomicReference">
    <constructor-arg value="D:\PATH\"/>
</bean>

在这个区块中...... remote-directory-expression="@targetDir.get()" 用于在运行时设置目录/路径。

Java方面:

AtomicReference<String> targetDir = (AtomicReference<String>)appContext.getBean("targetDir", AtomicReference.class);
    targetDir.set("E:\PATH\");

通过,您可以设置路径。