How to post mixed content using rest post snap?

I have a use case to upload a file (size > 50MB) to Salesforce. As Salesforce snappack supports file upload upto 50MB file so to upload file of size more than 50MB we need to use multipart form data request.

One part of request should be non-binary data and other part is binary data (file content) like below:

–boundary_string
Content-Disposition: form-data; name=“entity_content”;
Content-Type: application/json

{
“ContentDocumentId” : “069D00000000so2”,
“ReasonForChange” : “Marketing materials updated”,
“PathOnClient” : “Q1 Sales Brochure.pdf”
}

–boundary_string
Content-Type: application/octet-stream
Content-Disposition: form-data; name=“VersionData”; filename=“Q1 Sales Brochure.pdf”

Binary data goes here.

–boundary_string–

Can someone help me how to achieve this in rest post snap?

Thanks,
Mihir

@Mihir

I can see that this is related with the ContentVersion object in Salesforce(correct me if I am wrong).

Instead of using Rest Post Snap, check with the Salesforce Create Snap. The Snap supports the ContentVersion object.

Regards,
Spiro Taleski

2 Likes

@Spiro_Taleski
I tried using Salesforce Create snap with ContentVersion object but it is has a limitation of uploading 50Mb of text file or 37Mb of binary file. But I have upload a file whose size can vary upto ~250Mb.

Thanks,
Mihir

@Mihir

I was not aware about that limitation. Did the snap fail if you try to upload content greater than 50MB/37MB?

I am not very familiar with the Salesforce API’s, but you can try to send below sample as a body of the request (by replacing with your data):

{
    "ContentDocumentId": "069D00000000so2",
    "ReasonForChange": "Marketing materials updated",
    "PathOnClient": "Q1 Sales Brochure.pdf",
	"VersionData": "your binary file data(file content)"
}

And add Content Type = multipart/form-data, as a header of the request:

Regards,
Spiro Taleski

Hi @Spiro_Taleski,

Yes, Salesforce will send an error response if you try to upload content greater than 50MB/37MB using Salesforce API’s.

I have tried as you suggested but it didn’t work. :frowning:

Thanks,
Mihir