我们希望能够在创建频道后更改频道上的FTP目录。在我们的特定用例中,FTP put的子目录在运行时确定。例如:我们有用户上传的每日报告。应该在日常文件夹中存储在ftp服务器中。例如:test/reports/27-11-2012/abc.pdf
,test/reports/28-11-2012/abc.pdf
等。
一些像这样的
<int-ftp:outbound-channel-adapter id="ftpOutbound" channel="ftpChannel" remote-directory="remoteDirectoryPath"
session-factory="ftpClientFactory" />
remoteDirectoryPath - 它应该附加运行时
请有人给我们解决方案吗?
答案 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\");
通过,您可以设置路径。