Mule3将附件上载到SFTP服务器

Mule3将附件上载到SFTP服务器,ftp,mule,sftp,mulesoft,mule-esb,Ftp,Mule,Sftp,Mulesoft,Mule Esb,我想按原样将附件上载到从HTTP入站获取的SFTP服务器。这些文件可以是任何类型,如XML、JSON、txt等 我尝试了这些示例代码,但问题是上传文件的格式不符合我发送的格式。它始终存储在FTP服务器中,如1f144250-7b46-11ea-a605-38f9d3744a4d.dat <flow name="FtpUp"> <http:listener config-ref="HTTP_Listener_Configuration" path="/at

我想按原样将附件上载到从HTTP入站获取的SFTP服务器。这些文件可以是任何类型,如XML、JSON、txt等

我尝试了这些示例代码,但问题是上传文件的格式不符合我发送的格式。它始终存储在FTP服务器中,如
1f144250-7b46-11ea-a605-38f9d3744a4d.dat

    <flow name="FtpUp">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/attach1" doc:name="Copy_of_HTTP"/>
        <logger message="#[message.inboundAttachments.size()]" level="INFO" doc:name="Copy_of_Logger"/>
        <foreach collection="#[message.inboundAttachments]" doc:name="Copy_of_For Each">
            <set-payload value="#[payload.dataSource.content]" doc:name="Set Payload"/>
            <byte-array-to-string-transformer doc:name="Byte Array to String"/>
            <set-attachment attachmentName="test.txt" value="#[payload]" contentType="text/plain" doc:name="Attachment"/>
            <sftp:outbound-endpoint exchange-pattern="request-response" host="" port="22" path="" user="" password="" responseTimeout="10000" doc:name="SFTP"/>
        </foreach>
    </flow>
    <flow name="Copy_of_FtpUp">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/attach2" doc:name="Copy_of_Copy_of_HTTP"/>
        <foreach collection="#[message.inboundAttachments]" doc:name="Copy_of_Copy_of_For Each">
            <set-payload value="#[payload.dataSource.content]" doc:name="Set Payload"/>
            <sftp:outbound-endpoint exchange-pattern="request-response" host="" port="22" path="" user="" password="" responseTimeout="10000" doc:name="Copy_of_SFTP" disableTransportTransformer="true"/>
        </foreach>
    </flow>


有人能帮我找出丢失的部分吗?我只想上传这个文件,因为我正在进入HTTP入站。我使用的是Mulesoft 3(3.9.4 EE)。

问题可能是SFTP出站端点没有设置属性来定义输出文件的名称。默认值是消息id,它解释了您获得的名称

输出模式

将文件写入磁盘时要使用的模式。这可以使用 为此配置的文件名分析器支持的模式 连接器。默认情况下,使用文件传输引用。看到这个了吗 有关如何覆盖默认值的信息,请参见同一文档部分 解析器

类型:字符串

默认值:消息ID,例如ee241e68-c619-11de-986b-adeb3d6db038


此外,流将文件作为附件发送。SFTP连接器希望要传输的文件内容位于有效负载中。

以下是遵循@aled建议后的工作代码片段

<flow name="FtpUp">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/attach2" doc:name="HTTP"/>
    <foreach collection="#[message.inboundAttachments]" doc:name="Iterate attachments ">
        <set-variable variableName="fileName" value="#[payload.dataSource.part.fileName]" doc:name="Set File Name"/>
        <set-payload value="#[payload.dataSource.content]" doc:name="Set Payload"/>
        <sftp:outbound-endpoint exchange-pattern="request-response" host="" port="22" path="" user="" password="" responseTimeout="10000" doc:name="SFTP Server" disableTransportTransformer="true" outputPattern="#[flowVars.fileName]"/>
    </foreach>
</flow>

你是正确的,而且准确无误。一旦我改变了
outputPattern
,一切都正常了。谢谢