我无法从ftp服务器,FTP流入站通道适配器读取文件

时间:2016-10-11 22:27:31

标签: java spring ftp spring-integration

我想使用FTP流通道适配器来获取来自ftp服务器的非常简单的示例读取文件,我阅读了文档,但我不清楚, 我设法写文件到ftp服务器阅读一个例子但是,我无法获得阅读文件InputStream

<int:gateway service-interface="ftpmodule.service.FileWriterFTP"
    default-request-channel="ftpOutChannel"/>

<int-ftp:outbound-channel-adapter
    session-factory="ftpClientFactory" channel="ftpOutChannel"
    remote-directory="/web/" remote-filename-generator-expression="headers['fileName']">
</int-ftp:outbound-channel-adapter>

和我的课程

 public interface FileWriterFTP {

   public void write(@Header("fileName") String fileName,@Payload String message);

    public void write(@Header("fileName")String fileName,@Payload File file);
}

我运行应用程序,一切正常

public class AppConfig implements ApplicationRunner {

    @Autowired
    FileReaderFTP fileWriterFTP;
    public static void main(String[] args) {
        SpringApplication.run(AppConfig.class, args);
    }

    public void run(ApplicationArguments arg0) throws InterruptedException, ExecutionException, IOException {
        fileWriterFTP.write("test.txt","test");
    }
}

但我无法读取文件:

<int:channel id="ftpInChannel"/>

<int:gateway service-interface="ftpmodule.service.FileReaderFTP"
default-request-channel="ftpInChannel"/>

<int-ftp:inbound-streaming-channel-adapter session-factory="ftpClientFactory"
channel="ftpInChannel" filename-pattern="*.txt"
remote-file-separator="/" remote-directory="/web/">
</int-ftp:inbound-streaming-channel-adapter>

public interface FileReaderFTP {

    public InputStream read(String fileName);

}
@Autowired
FileReaderFTP fileReaderFTP;
InputStream stream = fileReaderFTP.read("test.txt");

1 个答案:

答案 0 :(得分:0)

您误解了入站通道适配器的工作方式 - 它是一个轮询式适配器,可将输入流发送到通道。

对于您的方案,您需要使用带有流GET命令的出站网关。

请参阅the gateway documentation

您还需要更多代码,因为对于流请求,您负责关闭输入流所属的会话。