Объект File имеет значение null для Camel Exchange getbody


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

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

        }
        })

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

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

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

2 2

2 ответа:

.produces(MediaType.APPLICATION_JSON)
    .consumes(MediaType.MULTIPART_FORM_DATA)
   .to("direct:extract");

    from("direct:extract")

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

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

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