2015-12-01 42 views
1

我想從ftp讀取文件並將其存儲在本地,與我的根目錄下的遠程文件(我需要它來處理文件)的路徑相同。 遠程文件路徑是動態的,並根據過濾器進行更改。 (當service-activator調用的方法拉文件處理)使用'local-filename-generator-expression'的ftp集成彈簧

<int:channel id="ftpChannel"> 
     <int:queue/> 
</int:channel> 

    <int-ftp:inbound-channel-adapter id="ftpInbound" 
     channel="ftpChannel" session-factory="ftpSessionFactory" 
     auto-create-local-directory="true" delete-remote-files="true" 
     remote-directory="/" 
     remote-file-separator="/" temporary-file-suffix=".writing" 
     local-filename-generator-expression ="/+=#this" 
     local-directory="${mfg.root.dir}"> 
     <int:poller fixed-rate="50000" /> 
    </int-ftp:inbound-channel-adapter> 

    <bean id= "directoryFilter" class="il.co.mit.mfg.filter.FilterClass" scope="prototype" > 
     <property name="channelType" value="****"/> 
     <property name="rootFolder" value="${mfg.root.dir}"/> 
    </bean> 

    <int:channel id="pubSubChannel"> 
     <int:queue/> 
    </int:channel> 
    <int:channel id="output"> 
     <int:queue/> 
    </int:channel> 

    <file:inbound-channel-adapter id="inboundfolder" 
     channel="pubSubChannel" 
     directory="${mfg.root.dir}" 
     prevent-duplicates="false"> 
    </file:inbound-channel-adapter> 

    <int:poller default="true" fixed-delay="5000"> 
      <int:transactional transaction-manager="transactionManager" /> 
    </int:poller> 

    <int:service-activator id="inputFileServiceActivator" 
     input-channel="pubSubChannel" method="pull" ref="typeAdapter" output-channel="output"> 
</int:service-activator> 

    <bean id="ftpSessionFactory" 
     class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory"> 
     <property name="host" value="*****" /> 
     <property name="port" value="21" /> 
     <property name="username" value="******" /> 
     <property name="password" value="******" /> 
     <property name="clientMode" value="0" /> 
     <property name="fileType" value="2" /> 
     <property name="bufferSize" value="100000" /> 
    </bean> 

我一直在嘗試使用local-filename-generator-expression,但我不知道怎麼寫了規劃環境地政司表示。 我有點新本,請幫助

回答

0

目前還不清楚您

遠程文件路徑是動態的,變化根據過濾器的意思。

遠程路徑是一個文字;該過濾器無法更改它。

remote-directory="/" 

如果你只是意味着你要使用的遠程文件名本地文件名 - 這將是默認的 - 只要省略local-filename-generator-expression

如果您真的需要動態路徑而不是文件名,那麼使用ftp outbound gateway會更好;您可以完全控制遠程和本地路徑。

+0

它的工作原理,它創建文件夾,但它不把文件,我得到異常 – lily

+0

引起:java.lang.ClassCastException:com.jcraft.jsch.ChannelSftp $ LsEntry不能轉換爲java.io.File – lily

+0

您需要顯示完整的堆棧跟蹤,但這意味着您使用'spring-integration-file'中的'FileListFilter'而不是'spring-integration-sftp'中的'Sftp ... Filter'。 –