Файловый объект является пустым для Camel Exchange getbody - PullRequest
0 голосов
/ 19 сентября 2018

В моем верблюжьем маршруте я пытаюсь получить объект файла.

rest("/file")
    .post("/extract")
    .to("direct:extract");
    from("direct:extract")
    .process(new Processor() {

        @Override
        public void process(Exchange exchange) throws Exception {
             File file = exchange.getIn().getBody(File.class);
             LOG.info("file : "+file);
     multipartEntityBuilder.addPart("file", new FileBody(file, ContentType.MULTIPART_FORM_DATA,filename));

        }
        })

Здесь, в состоянии покоя, я отправляю файл в процессор, когда я пытаюсь пройти через обмен getBody, я получаю нулевое значение.Но то же самое, если я пытаюсь получить Inputstream, а byte [] означает, что он работает нормально.

    byte[] bytes = exchange.getIn().getBody(byte[].class);
    LOG.info("bytes : "+bytes);
    InputStream is = exchange.getIn().getBody(InputStream.class);

Моя цель - получить объект file из exchange getBody, если что-то не так, пожалуйста, дайте мне знать.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018
.produces(MediaType.APPLICATION_JSON)
    .consumes(MediaType.MULTIPART_FORM_DATA)
   .to("direct:extract");

    from("direct:extract")

    .setBody().simple("${body}")
    .to("http4://....")
    .end();

вам не нужно преобразовывать его в Byte [] или inputtream, вы можете напрямую передать его как тело и затем установить его как тело

0 голосов
/ 19 сентября 2018

Нет java.io.File в качестве тела сообщения, так как загрузка файла HTTP не представляется как java.io.File, а вместо этого является входным потоком.java.io.File - для обычного файлового компонента в Camel.

...