В зависимости от вашего HTTP-сервера, вам придется использовать разные подходы. Если у вас есть заданная ситуация (сервер Jetty), вы можете использовать компонент HTTP4 для загрузки файла:
from("jetty:http://localhost:8081/upload?httpMethodRestrict=PUT")
.log("Uploaded ${body}");
from("file:src/data/jetty?delay=5000&noop=true")
.setHeader(Exchange.HTTP_METHOD, constant(HttpMethods.PUT))
.to("http4://localhost:8081/upload");
Однако, если сервер принимает только многокомпонентные запросы, вам придется стать немного хитрее, например. используйте что-то вроде этого:
from("file:src/data/jersey?delay=5000&noop=true")
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
MultipartEntityBuilder multipartEntityBuilder =
MultipartEntityBuilder.create();
multipartEntityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntityBuilder.addPart("username", username);
multipartEntityBuilder.addPart("password", password);
String filename = (String)
exchange.getIn().getHeader(Exchange.FILE_NAME);
File file = exchange.getIn().getBody(File.class);
multipartEntityBuilder.addPart("upload",
new FileBody(file, MULTIPART_FORM_DATA, filename));
exchange.getIn().setBody(multipartEntityBuilder.build());
}
})
.to("http4://localhost:8080/restwb/upload");