spring integration sftp无法将文件移动到远程文件夹中处理

时间:2013-09-25 13:10:26

标签: spring sftp spring-integration

我可以将文件从远程计算机复制到本地,但无法将文件移动到远程服务器中的已处理文件夹。

<bean id="sftpSessionFactory" class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
<property name="host" value="test.com"/>
<property name="user" value="test"/>
<property name="password" value="test123"/>
<property name="port" value="22"/>
</bean>

<int:publish-subscribe-channel id="publishToSFTPChannel" />

<sftp:inbound-channel-adapter local-directory="#{articlesLocalDirectory}"  filename-pattern="*.xml"  channel="publishToSFTPChannel" session-factory="sftpSessionFactory" remote-directory="#{articlesRemoteDirectory}">
<int:poller fixed-rate="12000"/>
</sftp:inbound-channel-adapter>


<file:outbound-channel-adapter id="moveProcessedFile"
session-factory="sftpSessionFactory" 
channel="publishToSFTPChannel"
directory="#{articlesRemoteDirectory}/processed"
delete-source-files="true"  />

我无法将文件移动到远程ftp中的已处理文件夹

3 个答案:

答案 0 :(得分:1)

如果您需要在远程计算机上重命名文件,upcoming 3.0 release现在在(s)ftp出站网关上有mv命令。

答案 1 :(得分:1)

我同意Gary Russell的说法,最好的方法是使用mv命令。但是,如果您想使用当前版本,可以尝试类似于此的配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:int="http://www.springframework.org/schema/integration"
   xmlns:sftp="http://www.springframework.org/schema/integration/sftp"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/integration
        http://www.springframework.org/schema/integration/spring-integration.xsd
        http://www.springframework.org/schema/integration/sftp
        http://www.springframework.org/schema/integration/sftp/spring-integration-sftp-2.2.xsd">

<bean id="sftpSessionFactory" class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
    <property name="host" value="localhost"/>
    <property name="user" value="user01"/>
    <property name="password" value="abc123"/>
    <property name="port" value="990"/>
</bean>

<int:channel id="sftpChannel"/>

<sftp:inbound-channel-adapter local-directory="/tmp/test" filename-pattern="*.xml"
                              channel="sftpChannel" session-factory="sftpSessionFactory"
                              remote-directory="/">
    <int:poller fixed-rate="5000"/>
</sftp:inbound-channel-adapter>

<sftp:outbound-channel-adapter channel="sftpChannel" session-factory="sftpSessionFactory"
                               remote-directory="/processed"/>

</beans>

inbound-channel-adapter将文件从SFTP服务器下载到本地目录,outbound-channel-adapter将该文件的副本放在SFTP服务器上的/ processed文件夹中。

请注意,这绝对不是最佳选择,因为您必须将文件重新上传到SFTP。

答案 2 :(得分:0)

请浏览此链接:

http://publib.boulder.ibm.com/infocenter/wmbhelp/v6r1m0/index.jsp?topic=%2Fcom.ibm.etools.mft.doc%2Fac55462_.htm 可能有助于在远程服务器上移动文件...