我想在 HTTP POST 请求中发送一个文件,然后让 Mule 使用 FTP 将文件上传到服务器上的文件目录。看起来 FTP 连接器将有效负载保存到文件目录,但这实际上是空的,并且 FTP 将一个空文件写入该目录。
我已经使用 Postman 将二进制/八位字节流作为 raml 中的媒体类型和 http 请求取得了一些成功,但文件无法打开,看起来可能已损坏,当我使用表单数据作为 raml 中的媒体类型时raml 和 http 请求它在 message.inboundAttachments 中显示为键值对,但如何让 FTP 连接器从 inboundAttachments 写入。我尝试将其设置为显示为 javax 对象的有效负载,但在将其写入文件目录时遇到问题。我该如何做到这一点以及采取的最佳方法是什么?文件将是文件 >= 1 并且可以是不同的文件类型。我目前只是用一个文件进行测试。
此外,写入文件时的名称为 28f42420-b325-11e7-8ffb-dcb320524153.dat。我如何指定名称,因为它看起来像 message.inboundProperties.originalFilename 为空?
我正在使用 Anypoint Studio 6.2 和 Mule 3.8.3 以及 Postman 进行 http 调用,因为 Mule 控制台似乎没有提供在请求中发送文件的选项。
RAML
/ftp:
displayName: FTP Test
description: Send file to directory using FTP
post:
description: Send file
body:
binary/octet-stream:
multipart/form-data:
application/x-www-form-urlencoded:
properties:
file:
description: The file to be uploaded
required: true
type: file
responses:
200:
body:
application/json:
当前的 XML 流程
<flow name="sendFtpFile">
<set-payload value="#[message.inboundAttachments.file]" doc:name="Set Payload"/>
<ftp:outbound-endpoint host=${host} port="21" path=${filePath} user=${user} password=${pwd} connector-ref="FTP" responseTimeout="10000" doc:name="FTP"/>
</flow>
Thanks
RAML 将多个文件发送到 Mule api/端点可以定义为下面帖子的回答中提到的-
使用 RAML 在 HTTP 请求中发送多个文件 https://stackoverflow.com/questions/46767235/send-multiple-files-in-http-request-using-raml/46769887#46769887
To 在 Mule api 中读取这些文件,您可以使用 for-each 构造,如下所示的内容可能很有用:
<foreach doc:name="For Each" collection="#[message.inboundAttachments]">
<set-payload value="#[payload.dataSource.content]" doc:name="Set Payload"/>
<byte-array-to-string-transformer doc:name="Byte Array to String"/>
<logger message="Content :- #[payload]" level="INFO" doc:name="Logger"/>
</foreach>
阅读后,您可以根据需要编辑或转换文件,并将其添加为附件设置附件
<set-attachment attachmentName="requiredFile.xml" value="#[payload]" contentType="text/xml" doc:name="Attachment"/>
And 然后您可以将其发送到所需的 FTP 连接器.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)