【发布时间】:2012-11-06 06:57:22
【问题描述】:
是否可以通过代码调用 sftp 出站端点并发送文件? 我在 java 代码中(在自定义转换器中)有一个 File 对象的引用,我想调用 sftp 出站端点并传递该 File 引用。这是可行的吗? 谢谢。
【问题讨论】:
是否可以通过代码调用 sftp 出站端点并发送文件? 我在 java 代码中(在自定义转换器中)有一个 File 对象的引用,我想调用 sftp 出站端点并传递该 File 引用。这是可行的吗? 谢谢。
【问题讨论】:
给它一个FileInputStream,应该可以。
muleContext.getClient().dispatch("sftp://...", new FileInputStream(file), null);
如果没有,您必须将其传递给 byte[]。
请注意,dispatch 是异步的:调用将在 SFTP 通信发生时立即返回。如果您想等到它完成,请使用 send 并将超时作为最后一个参数。
由于您配置了多个 SFTP 连接器,因此您必须在 URL 中指定连接器名称。假设您想使用SFTP_Upload_Connector 进行调度,则必须使用:
muleContext.getClient().dispatch("sftp://...?connector=SFTP_Upload_Connector", new FileInputStream(file), null);
如果要设置特定的目标文件名,请将其作为属性映射中名为 filename 的属性传递,例如使用:
muleContext.getClient().dispatch("sftp://...?connector=SFTP_Upload_Connector", new FileInputStream(file), Collections.singletonMap("filename", "somen_ame"));
【讨论】:
filename 属性使用的注释。