如何发送HTTP请求中的文件,并通过Mule上传到文件服务器

问题描述:

我想通过HTTP POST请求发送文件,然后让Mule使用FTP将文件上传到服务器上的文件目录。它看起来像FTP连接器将有效负载保存到文件目录,但是这是通过为空,并通过FTP将空文件写入目录。如何发送HTTP请求中的文件,并通过Mule上传到文件服务器

我已经有一些成功的二进制/八位字节流作为raml和http请求中使用邮递员的媒体类型,但该文件不打开,看起来像它可能会损坏,当我使用表单数据作为raml和http请求中的媒体类型,它显示为message.inboundAttachments中的一个键值对,但是如何从inboundAttachments中获取要写入的FTP连接器。我已经尝试将它设置为显示为javax对象的有效负载,但在将其写入文件目录时存在问题。我该如何做到这一点,最好的方法是什么?文件将是文件> = 1,并且可能是不同的文件类型。我目前只是用一个文件来测试它。

此外,写入文件时名为28f42420-b325-11e7-8ffb-dcb320524153.dat。如何指定名称,因为它看起来像message.inboundProperties.originalFilename为空?

我正在使用Anypoint Studio 6.2和Mule 3.8.3和Postman进行http调用,因为Mule控制台似乎没有给出在请求中发送文件的选项。

在答复中提到的肾错构瘤

/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> 

感谢

肾错构瘤发送多个文件骡子API /端点可以定义post below-

Send multiple Files in HTTP request using RAML

阅读骡子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"/> 

而且其添加为附件然后哟你可以将它发送到所需的FTP连接器

+0

谢谢。我正在寻找文件名作为原始文件名+时间戳。有没有办法获得这些信息? message.inboundProperties.originalFilename显示为空 – user3165854

+0

使用 #[payload.dataSource.part.fileName]获取附件的名称.. –

+0

非常感谢您的帮助。它清除了很多关于如何传递Mule中的文件的查询。谢谢 – user3165854