In a spring-boot camel application I want to consume http file uploads.
In my application.properties I bypass Spring Boot's MultipartResolver and
let Camel handle the multipart data directly:
*spring.servlet.multipart.enabled=false*

I am using this curl command to upload 2 simple text files:


*curl --location --request POST 'localhost:8080/send/data' \--form
'form-field-1=@"a.txt"' --form 'form-field-2=@"b.txt"' \--verbose*

```
 @Override
    public void configure() throws Exception {
        // Define REST configuration
        restConfiguration()
            .component("platform-http")
            .port(8080)
            .bindingMode(RestBindingMode.off)
            .dataFormatProperty("multipart", "true");

        // Define POST endpoint for uploading files
        rest("/send")
            .post("/data")
            .consumes("multipart/form-data")
            .to("direct:processFiles");

        from("direct:processFiles")
            .log("Receiving file(s)...")
//            .unmarshal().mimeMultipart()
            .setHeader("CamelFileName", constant("newfile.txt"))
            .to("stream:out")
//            .to("file:" + inputDirectory)
            .log("Upload process complete.");
    }
```

With the above route I get following console output:










*--------------------------cMowx5JcRMRWFrVR7Tx5VaContent-Disposition:
form-data; name="form-field-1"; filename="a.txt"Content-Type: text/plainI
am the content of file
a!--------------------------cMowx5JcRMRWFrVR7Tx5VaContent-Disposition:
form-data; name="form-field-2"; filename="b.txt"Content-Type: text/plainI
am the content of file b!--------------------------cMowx5JcRMRWFrVR7Tx5Va--*


1. I found many resources talking about attachments:
Map<String, DataHandler> attachments =
exchange.getIn(AttachmentMessage.class).getAttachments()
I used curl and postman, but my request has no attachments

2. Is it the correct Camel way to bypass Spring Boot's MultipartResolver or
should I look into using Tomcats way to handle multipart/form-data?

3. Is there any easy way to parse the multipart/form-data request bodies in
Camel.
I tried ".unmarshal().mimeMultipart()", but this throws following exception:
No type converter available to convert from type:
org.apache.camel.converter.stream.ReaderCache to the required type:
java.io.InputStream

Thanks

Reply via email to