2017-10-17 162 views
0

我想通過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> 

感謝

回答

2

腎錯構瘤發送多個文件騾子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

相關問題