Looks like there was a way to do this
I have develop this other option. The solution use hexadecimal to encode the entire body, you can use this with multiple params and files as you need
The use is very simple and clear, see the example bellow
String fileName = 'file.png';
String fileContent = ''; //base64 encoded
Blob formData = HttpHexFormBuilder.build()
.writeParam( 'id', '123' )
.writeParam( 'message', 'my second paramter' )
.writeFile( 'file', fileName, fileContent )
.getFormAsBlob();
HttpRequest request = new HttpRequest();
request.setEndpoint(endpoint);
request.setHeader( 'Connection', 'keep-alive' );
request.setHeader( 'Content-Length', String.valueOf(formData.size()) );
request.setHeader( 'Content-Type', HttpHexFormBuilder.GetContentType() );
request.setBodyAsBlob(formData);
Http http = new Http();
HttpResponse respose = http.send(request);
You have to use the HttpHexFormBuilder class to build the blob that you will use as body of your HtttpRequest
The entire code of the HttpHexFormBuilder is avaliable here, with the same sample
Let me know if this was helpfull for you