我正在尝试使用sftp:write和sftp:content从内存创建一个sftp文件。我的数据编织代码是:
<sftp:write doc:name="sftp from memory" doc:id="01bee2a1-69ad-4194-8ec8-c12852521e87" config-ref="SFTP_Config" path="#[vars.sftpFileName]" createParentDirectories="false">
<sftp:content><![CDATA[%dw 2.0
output application/csv
---
payload.toplevel.secondlevel.bottomlevel[0],
payload.more.andmore.andstillmore[0]
]]>
</sftp:content>
</sftp:write>它确实在正确的目录中创建了一个文件,但其内容不是有效负载值。相反,它是实际的数据编织代码。文件内容为:
%dw 2.0
output application/csv
---
payload.toplevel.secondlevel.bottomlevel[0]
payload.more.andmore.andstillmore[0]我使用的是4.2.2版本的Mule Server和1.3.2版本的SFTP组件。
发布于 2021-01-14 22:49:42
实际上,您传递的不是dataweave,而是一个字符串。当您要使用dataweave时,请在字段上按fx按钮。XML将如下所示。注意到额外的#[了吗?这表明这是数据编织。您的数据编织也是无效的;您必须输出一个对象或对象数组;要使您的输出成为对象,您需要将其包装在{中。}就像JSON一样,使用键-值对。将其输出到CSV时,这些键将用作标题行,除非在输出行中包含header=false:https://docs.mulesoft.com/mule-runtime/4.3/dataweave-formats-csv#writer_properties
<sftp:write doc:name="sftp from memory" doc:id="01bee2a1-69ad-4194-8ec8-c12852521e87" config-ref="SFTP_Config" path="#[vars.sftpFileName]" createParentDirectories="false">
<sftp:content><![CDATA[#[%dw 2.0
output application/csv
---
{
someKeyName: payload.toplevel.secondlevel.bottomlevel[0],
someOtherKeyName: payload.more.andmore.andstillmore[0]
}]]]>
</sftp:content>
</sftp:write>https://stackoverflow.com/questions/65719681
复制相似问题