cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Cayshin
Resolver II
Resolver II

HTTP POST files with multipart/form-data

Hi all,

 

I'm having difficulty uploading a file via the Procore API - Create Project File.

What's throwing me off is their mention in above link for the "data" field : "Note that it's only possible to post a file using a multipart/form-data body (see RFC 2388)."

 

I can't figure out how to format my JSON request in this multipart/form-data format that the API will understand correctly. Everything I upload comes through as corrupted.

 

I tried doing a test with generating a text file to see what happens.

Here's my POST request:

Cayshin_1-1628711129424.png

 

This is the resulting text file:

Cayshin_2-1628711291194.png

 

So from that it seems like the API isn't even interpreting my JSON after "data": { as JSON, but instead as literal string text for the test.txt file.

 

So I instead tried this (File content is a png picture):

Cayshin_4-1628711531373.png

 

That too resulted in a corrupted image file. So I tried many variations of the above such as adding quotes around File Content, or replacing File content with base64(outputs('Get_file_content_using_path')?['body']),or trying base64(outputs('Get_file_content_using_path')?['body'])?['$content']. Everything corrupted.

 

Using Postman, I was able to successfully upload a file without issues.

So I tried using the HTTP output of that as my POST request:

Cayshin_5-1628712310193.png

This just results in an "Internal Server Error".

Cayshin_6-1628712394837.png

 

 

I just can't seem to find that magic formatting where I'm passing the file data in correctly.

Any run into a similar problem before? I've probably read almost all the other topics on this here and tried the solutions in them, but none worked.

 

1 ACCEPTED SOLUTION

Accepted Solutions
Cayshin
Resolver II
Resolver II

For any future readers this may help: I've figured it out.

Cayshin_0-1629489184970.png

 

Above is the properly formatted multipart/form-data body I had to use.

One notable thing I had to do was convert the File Content output to a Compose action (the "Outputs" item in my body).

Cayshin_1-1629489292011.png

 

I don't know what composing the File Content does VS just using the File Content output itself, but it's what worked for me.

 

View solution in original post

14 REPLIES 14
Cayshin
Resolver II
Resolver II

For any future readers this may help: I've figured it out.

Cayshin_0-1629489184970.png

 

Above is the properly formatted multipart/form-data body I had to use.

One notable thing I had to do was convert the File Content output to a Compose action (the "Outputs" item in my body).

Cayshin_1-1629489292011.png

 

I don't know what composing the File Content does VS just using the File Content output itself, but it's what worked for me.

 

Subject: HTTP POST request in Power Automate
Hello Team,
 We are getting internal server error in HTTP POST request using Content type as “multipart/form-data” for uploading local PDF file.
Below are the details I am sending in request:
Request Headers:
headers are apikey, organizationid and emailaddress 
Request Body:
“invoiceDocument” – “abcnamed.pdf”
“requestId” – “abcd123”
 
We tried this on Postman and it is sending request successfully. Can you please help to make it work in Power Automate?

@poojaghuge 

 

Can you please post some screenshots of your Power Automate actions so I can see how you're formatting the request?

poojaghuge
Frequent Visitor

Hi,

@Cayshin 

 

here i attached screen shot,

HTTP Request_LI.jpgInternalServerError.png

poojaghuge
Frequent Visitor

hi @Cayshin 

 

did you find any solution?

Hi @Cayshin ,

 

did you get any chance to look into this. we need to complete this POC as soon as possible.

Try something like this:

Cayshin_1-1643980066145.png

 

If you see my above posts, the key for me was putting the "File Content" into a compose action, then using that as my "body:" value. I can't guarantee the above will work unless also seeing the API documentation for the endpoint you're using.

 

 

Copy+pastable code, edit as needed:

{
"$content-type": "multipart/form-data",
"$multipart": [
{
"headers": {
"Content-Disposition": "form-data; name=\"requestid\""
},
"body": "abcd123"
},
{
"headers": {
"Content-Disposition": "form-data; name=\"InvoiceDocument[]\"; filename=\"@{triggerOutputs()?['body/Name']}\""
},
"body": @{outputs('Compose_4')}
}
]
}

 

poojaghuge
Frequent Visitor

Hi @Cayshin ,

 

We tried this solution but it fails, and we cannot share documentation with you because it contains client credentials.

Here i attached screen shot of postman where we get expected output.Inkedpostman flow_LI.jpg

poojaghuge
Frequent Visitor

Hi @Cayshin ,

 

Can You please suggest another solution

Unfortunately I don't have any other answers: I'm a novice at doing API calls. I figured out my above issue with many hours of trial-and-error until I found something that worked.

matthew11111112
Regular Visitor

Hi,

Can you help me with mine?

The file is sent correctly, but I'm not able to open it. What can I do?

matthew11111112_0-1669292870627.png

I think I should switch to Content-Type multipart/form-data but what to put in the body?

matthew11111112
Regular Visitor

X-NomFichier  has to be in the header and when I start to write something in the body, it always fail. 

matthew11111112
Regular Visitor

With this the message doesn't even send itself.

matthew11111112_0-1669314175682.png

I have to have my headers X-NomFichier and X-Message, it is why I put them below the $content-type. But I'm not even sure of this one. Can anyone can help me please.

ameerabbasawan
New Member

I team i am trying to upload image with same instructions but still getting error binary is not found.

actually my api accept byte array

Helpful resources

Announcements
Power Automate News & Announcements

Power Automate News & Announcements

Keep up to date with current events and community announcements in the Power Automate community.

Community Calls Conversations

Community Calls Conversations

A great place where you can stay up to date with community calls and interact with the speakers.

Power Automate Community Blog

Power Automate Community Blog

Check out the latest Community Blog from the community!

Top Solution Authors
Users online (3,108)