Загрузка Java Camel FTP

Во-первых, извините за мой плохой английский.

Проблема в том, что я не могу загрузить файл (.xls) на локальный FTP-сервер.

Это Исключение:

[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://[email protected]: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)

person kinaesthesia    schedule 26.12.2012    source источник


Ответы (1)


Вложения не используются. Вместо этого просто установите тело сообщения в 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>
person Claus Ibsen    schedule 27.12.2012