You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确使用Spring Integration SFTP Outbound Gateway的mput上传目录文件

解决Spring Integration SFTP出站网关批量上传目录文件问题

问题原因

使用mput命令时,直接将目录对象作为payload传入,默认的expression="payload"无法自动遍历目录下的所有文件,仅会处理目录本身,最终导致仅上传单个文件。

解决方案

1. 修改SFTP出站网关配置

调整expression属性,用通配符匹配目录下的所有文件,同时按需开启递归上传子目录:

<int-sftp:outbound-gateway session-factory="sftpSessionFactory"
                           use-temporary-file-name="false"
                           request-channel="tmpDirToUploadOutputChannel"
                           command="mput"
                           expression="payload.path + '/*'"
                           remote-directory="/out"
                           recursive="true" <!-- 如需递归上传子目录则添加此属性 -->
                           reply-channel="sftpUploadFilesResultChannel">
</int-sftp:outbound-gateway>

关键配置说明

  • expression="payload.path + '/*'":将传入的目录对象转换为「目录路径+通配符」的形式,让mput命令识别并处理目录下的所有文件。
  • recursive="true":如果需要上传目录下的所有子目录及嵌套文件,添加此属性开启递归处理逻辑。

2. 消息发送代码无需修改

你的Kotlin消息发送逻辑保持原样即可,依然传入目录对象作为payload:

val message = MessageBuilder
    .withPayload(tmpOutFile)
    .build()

配置完成后,SFTP出站网关会自动遍历目标目录下的所有文件(含子目录,若开启递归),完成批量上传操作。

内容的提问来源于stack exchange,提问作者Tomek Niemczak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 14:43:21