我正在尝试使用SFTP出站网关上传多个文件。我的Java代码如下:
select concat_ws(" ", `first name`, `last name`) as name
from Students
where GPA > 3.5;
这是XML Config:
final DirectChannel reqWriteChannel = (DirectChannel) context.getBean("toWriteChannel");
final PollableChannel repWriteChannel = (PollableChannel) context.getBean("fromWriteChannel");
reqWriteChannel.send(MessageBuilder.withPayload(listOfFiles).build());
Message<?> input = repReadChannel.receive(1000);
System.out.println(input);
System.out.println(input.getPayload().toString());
当我传递单个文件时,上面的代码有效,但是当我传递文件列表时,出现以下异常:
<int:channel id="fromWriteChannel"><int:queue /></int:channel>
<int:channel id="toWriteChannel" />
<int-sftp:outbound-gateway
id="sftpWriteOnly"
session-factory="sftpSessionFactory"
request-channel="toWriteChannel"
reply-channel="fromWriteChannel"
command="mput"
expression="payload"
remote-directory="/test/mytest/"
remote-file-separator="X"
auto-create-directory="true"
order="1" mput-regex=".*">
</int-sftp:outbound-gateway>
<int:poller default="true" fixed-delay="500"/>
有什么办法解决此问题并上传多个文件吗?请分享任何完整的示例。谢谢
答案 0 :(得分:0)
MPUT发送目录中的所有文件;不是File
的列表。
来自the documentation ...
mput将多个文件发送到服务器并支持以下选项:
-R - Recursive
-发送目录和子目录中的所有文件(可能已过滤)消息有效负载必须是代表本地目录的java.io.File。
...
(我的重点是,它也可以是引用目录的String)。
如果您不想发送所有文件,则可以添加过滤器。
随时打开“改进” JIRA Issue,我们可以添加对File
集合的支持。