spring 集成 ftp 如何将文件发送到不同的子文件夹

spring integratoin ftp how to send files to different sub-folders

我已成功将所有本地文件发送到目标 ftp 服务器文件夹,配置如下:

@Bean
@ServiceActivator(inputChannel = FtpDef.FTP_OUTBOUND_CHANNEL)
public MessageHandler handler() {
    FtpMessageHandler handler = new FtpMessageHandler(ftpSessionFactory());
    handler.setRemoteDirectoryExpression(
            // only one path can be set here 
            new LiteralExpression("/path/on/ftp/"));
    return handler;
}

现在我需要将每个文件保存在本地的目录结构中。

例如

/base/a/a.txt  =>  /path/on/ftp/a/a.txt
/base/a/aa.txt  =>  /path/on/ftp/a/aa.txt

/base/b/b.txt  =>  /path/on/ftp/b/b.txt
/base/b/bb.txt  =>  /path/on/ftp/b/bb.txt

我怎样才能做到这一点,我

new LiteralExpression("/path/on/ftp/")

不要使用 LiteralExpression,即,呃...字面意思。

改为使用:

new SpelExpressionParser().parseExpression(rdExpression)

其中 rdExpression 类似于...

"'/path/on/ftp/' + payload.absolutePath"