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:
This is the resulting text file:
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):
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:
This just results in an "Internal Server Error".
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.
Solved! Go to Solution.
For any future readers this may help: I've figured it out.
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).
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.
For any future readers this may help: I've figured it out.
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).
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.
Can you please post some screenshots of your Power Automate actions so I can see how you're formatting the request?
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:
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')}
}
]
}
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.
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.
Hi,
Can you help me with mine?
The file is sent correctly, but I'm not able to open it. What can I do?
I think I should switch to Content-Type multipart/form-data but what to put in the body?
X-NomFichier has to be in the header and when I start to write something in the body, it always fail.
With this the message doesn't even send itself.
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.
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
User | Count |
---|---|
88 | |
37 | |
26 | |
13 | |
13 |
User | Count |
---|---|
127 | |
54 | |
38 | |
24 | |
21 |