【问题标题】:sftp:outbound-gateway moving file not workingsftp:出站网关移动文件不起作用
【发布时间】:2016-11-10 13:07:20
【问题描述】:

我是弹簧集成的新手。我请求帮助我解决这个问题。

我正在使用 sftp:outbound-gateway 将文件从一个文件夹移动到另一个文件夹。

文件夹结构为:

top-dir
- module-dir
    - output-dir
        filexyz.txt
    - archive-dir

我想将 filexyz.txt 从输出移动到存档文件夹。

配置是:

<int-sftp:outbound-gateway 
session-factory="ftpSessionFactory"
expression="payload.remoteDirectory + '/' + payload.filename"
request-channel="inChannel"
command="mv"
rename-expression="payload.remoteDirectory + '/' +      
payload.filename.replaceFirst('output-dir','archive-dir')"
reply-channel="outChannel"/>

java代码:

 DirectChannel moveChannel = context.getBean("inChannel",DirectChannel.class);
 moveChannel.send(new GenericMessage<File>(new File("top-dir\module-dir\output-dir\filexyz.txt")));

我在how to replace string in SpEL expression? 提到了问题,但无法解决我的问题。

我收到表达式评估失败:payload.remoteDirectory + '/' + payload.filename 异常。

我认为我在 java 代码中做错了什么。

请帮帮我。

【问题讨论】:

    标签: spring-integration


    【解决方案1】:

    expression="payload.remoteDirectory + '/' + payload.filename"

    你的有效载荷是一个简单的java.io.File;它没有这些属性。

    需要使用绝对路径;像

    expression="payload.absolutePath

    rename-expression="payload.absolutePath.replace....

    如果您在 Windows 上运行,您可能还需要将 \ 替换为 /

    要使用现有表达式,您需要一个自定义有效负载,而不是 File,并具有 remoteDirectoryfilename 属性。

    【讨论】:

    • 非常感谢加里。我可以使用自定义有效负载解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 2012-08-27
    • 1970-01-01
    相关资源
    最近更新 更多