I don’t get credit for figuring this one out, but it was tricky to find the right resource as well as getting your head around how it differs to what you gravitate towards.
Full credit to https://willpage.dev/2019/12/20/using-the-http-action-to-post-multipart-form-data-in-power-automate-logic-apps/. This hopefully increases the visibility for Will’s solution and explanation as it took me a bit of time to find this post. (There is also another blog out there that ripped off his post with no credit)
Key takeaways:
- You’re not building a multipart/form-data body that you would send over HTTP: you’re invoking a very specific app behaviour that tells the flow to create a multipart/form-data request without modifying the file content
- The need to use a reference to ” instead of the literal value in the disposition section (what the actual)
- That you don’t need to complete any binary conversions
- That if passing multiple dispositions, you need to create multiple header objects (🙃?)
- How to specify the upload content type
Here is an example of what it looks like with multiple dispositions. In this example I am sending the HTTP request to Directus, here is what the receiving server’s spec looks like for a point of reference.

The red underlined ones are references to “s. The green highlight are the content bytes from the binary.
{
"$content-type": "multipart/form-data",
"$multipart": [
{
"headers": {
"Content-Disposition": "form-data; name="folder""
},
"body": "84c5f90c-91af-4fcc-a76f-8905e1aee776"
},
{
"headers": {
"Content-Disposition": "form-data; name="file"; filename="filename to use.png""
},
"body": {
"$content-type": "image/png",
"$content": "image binary content"
}
}
]
}
Thanks for the credit Lucas, I appreciate it!