ПОМЕСТИТЕ файл с помощью Apache Camel с Quarkus

#upload #apache-camel #quarkus #put

#загрузка #апач-верблюд #кваркус #класть

Вопрос:

Я изо всех сил пытался заставить демо-версию работать с помощью camel и Quarkus, где я читал локальный файл и помещал его в конечную точку. У кого-нибудь есть какая-либо помощь, которую они могут оказать, чтобы правильно загрузить файл в конечную точку с помощью Quarkus? Ошибка, которую я продолжаю получать, такова No Content to map due to end-of-input at [Source: (org.apache.camel.converter.stream.InputStreamCache); line 1, column: 0] . Пример кода, который я запускаю, приведен ниже.

 package com.me.demo;  import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths;  import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper;  import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.jackson.JacksonDataFormat; import org.apache.camel.model.rest.RestBindingMode; import org.apache.camel.processor.aggregate.tarfile.TarAggregationStrategy;  import io.netty.handler.codec.http.HttpMethod;  /**  * Camel route definitions.  */ public class Routes extends RouteBuilder {   @Override  public void configure() throws Exception {   restConfiguration().bindingMode(RestBindingMode.json);    rest("/demo/push")  .post()  .consumes("application/json")  .type(demoPush.class)  .route()  .setHeader("uploadUrl", "http://localhost:8080/uploadFile"))  .removeHeaders("CamelHttp*")  .setHeader("FILE_PATH", simple("{{file.location}}"))  .process(new Processor() {  @Override  public void process(Exchange exchange) throws Exception {  byte[] fileBytes = Files.readAllBytes(Paths.get(exchange.getIn().getHeader("FILE_PATH")   "/demo.tar.gz"));  exchange.getIn().setBody(fileBytes, byte[].class);  }  })  .marshal().mimeMultipart("mixed")  .setHeader("Content-Type", constant("application/octet-stream"))  .setHeader(Exchange.HTTP_METHOD, constant("PUT"))  .toD("${header.uploadUrl}")  .convertBodyTo(String.class)  .unmarshal().json()  .end();  } }  

Комментарии:

1. В документе говорится: «Опция маршала формата mime-составных данных преобразует сообщение с вложениями в MIME-составное сообщение». У вас нет привязанностей ! Попробуйте установить значение «multipartWithoutAttachment» в значение true