0

Mule では、http ポスト経由で送信された xlsx ファイルを Java 経由で操作する必要があります。Java経由で投稿されたファイルを取得するにはどうすればよいですか? Muleメッセージで届くと思っていたのですが、

eventContext.getMessage().getOutboundAttachmentNames()

どちらでもない

eventContext.getMessage().getInboundAttachmentNames()

結果を出します。

何か案は?

http ポスト テストを作成するには、次のように curl を使用します。

curl --form upload=@filename --form press=OK http://localhost:8088/HttpController

流れは単純に次のようなものです。

    <flow name="xlsx_to_xls_converterFlow1" doc:name="xlsx_to_xls_converterFlow1">
        <http:inbound-endpoint exchange-pattern="request-response"   doc:name="HTTP" address="http://localhost:8088/HttpController"/>
        <logger  level="INFO" doc:name="Logger"/>
        <component class="Convert_XLSXtoXLS" doc:name="Java"/>
</flow>

ありがとうございました

更新しました

フラグ付きのソリューションを機能させるには、HttpMultipartMuleMessageFactory の extractPayloadFromHttpRequest をオーバーライドして、適切な入力ファイル名を選択します。実際、現在の HttpMultipartMuleMessageFactory 実装では、入力ファイル名 = "payload" の場合にのみファイルがアップロードされます

4

2 に答える 2

3

マルチパート リクエストを添付ファイルで受信するには、HTTP コネクタを設定してマルチパート リクエストを処理する必要があります。その XML 構成内に次を追加します。

<service-overrides messageFactory="org.mule.transport.http.HttpMultipartMuleMessageFactory"/>

(これが面倒だと思われる場合は、https ://www.mulesoft.org/jira/browse/MULE-6862 に賛成票を投じてください)

于 2013-10-16T14:19:29.300 に答える
0

Java コンポーネントを http:inbound-endpoint の背後に配置すると、InputStream がコンポーネント内のメソッドへの引数になります。

入力ストリームを操作するか、間にエコーを挿入する必要があります。

<flow name="FileUpload" doc:name="FileUpload">
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="9090" doc:name="HTTP"/>
    <echo-component doc:name="Echo"/>
    <component class="de.codecentric.basics.FileUploadComponent" doc:name="Java"/>
</flow>

コンポーネントには 1 つのメソッドがあります。

パッケージ de.codecentric.basics;

public class FileUploadComponent {

public String process(String message) {
System.out.println("message: " + message);
return "OK";
}

}

この場合でも、マルチパート フォーム データを解析する必要があります。

または、REST コンポーネントを使用してみてください。http ://www.javaroots.com/2013/05/createfileuploadmulejerseyrest.html を参照してください。

于 2013-10-16T13:22:41.817 に答える