2017-10-17 31 views
0

HTTP POST要求でファイルを送信し、FTPを使用してサーバー上のファイルディレクトリにファイルをアップロードします。これは、FTPコネクタがファイルディレクトリにペイロードを保存するように見えますが、これはnullとして渡され、空のファイルはFTPによってディレクトリに書き込まれます。HTTPリクエストでファイルを送信し、FTP経由でMuleのFTP経由でファイルサーバーにアップロードする方法

Postmanを使用してramlとhttpリクエストのメディアタイプとしてバイナリ/オクテットストリームで成功しましたが、ファイルが開かず、破損している可能性があります。フォームデータをメディアタイプはramlとhttpリクエストでmessage.inboundAttachmentsのキー値のペアとして表示されますが、どのようにFTPコネクターをinboundAttachmentsから書き込むようにしますか。私はそれをjavaxオブジェクトとして表示するペイロードとして設定しようとしましたが、ファイルディレクトリに書き込む際に問題があります。私はこれをどのようにして行うことができ、取るべき最良のアプローチは何ですか?ファイルはファイル> = 1であり、異なるファイルタイプである可能性があります。私は現在、1つのファイルでそれをテストしています。

また、ファイルが書き込まれたときの名前は、28f42420-b325-11e7-8ffb-dcb320524153.datとなります。 message.inboundProperties.originalFilenameがnullのように、どのように名前を指定できますか?

Muleコンソールが要求にファイルを送信するオプションを表示しないため、Anypoint Studio 6.2とMule 3.8.3とPostmanを使用してhttpコールを行っています。

への答えで述べたように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は、API /エンドポイントをラバする複数のファイルを送信するために

<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

RAML流れを定義することができます。投稿者:

編集またはとしてファイルを変換することができ読ん

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

回:

Send multiple Files in HTTP request using RAML

は、あなたがのために、各構築、以下のようなものが有用である可能性が使用することができミュールのAPIでこれらのファイルを読み込みますセット付属

<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

関連する問題