2

まず、私の下手な英語で申し訳ありません。

問題は、ローカル FTP サーバーにファイル (.xls) ファイルをアップロードできないことです。

これは例外です:

[org.apache.camel.component.file.GenericFileOperationFailedException - Error writing file GAS_EAV_EMV.xls]

これは私のルートです:

<route id="sendFtp">
    <from uri="direct:sendFtp"/>
    <setHeader headerName="CamelFileName">
        <simple>GAS_EAV_EMV.xls</simple>
    </setHeader>
    <process ref="egssisFtpProcessor"/>
    <to uri="ftp://foo@127.0.0.1:21/?password=pwd"/>
</route>

ここで、ファイルを添付するプロセッサ:

public class EgssisFtpProcessor implements Processor {

    @Override
    public void process(Exchange exchange) throws Exception {
        String filename = exchange.getIn().getHeader(Exchange.FILE_NAME, String.class);
        exchange.getIn().addAttachment(filename, new DataHandler(new FileDataSource(filename)));
    }
}

交換オブジェクトには、プロセッサの最後にアタッチメントがあります。

SMTP プロトコルでは機能しますが、FTP では機能しません。

何か案が ?

サーバーログ:

[14:29:29] - [78] Connecté à 127.0.0.1. Collecte du Nom d'utilisateur.
[14:29:29] - [78] Usager FOO Connecté IP: 127.0.0.1
[14:29:29] - [78] FOO : Répertoire en Cours: C:\tmp\
[14:29:29] - [78] Client 127.0.0.1 Déconnecté (00:00:00 Min)
4

1 に答える 1

4

アタッチメントは使用しません。代わりに、アップロードするファイルのメッセージ本文を java.io.File に設定するだけです。

exchange.getIn().setBody(new File(filename));

また、XML を使用しているため、Java コードを使用せずにこれを行うことができます。メッセージ トランスレータ EIP を使用して、メッセージ本文をファイル名としてヘッダーを持つ java.io.File に変換できます。

<transform>
    <simple resultType="java.io.File">${header.CamelFileName}</simple>
</transform>
于 2012-12-27T12:24:23.797 に答える