Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Outbound REST - Multipart/form-data

Rshear
Kilo Expert

Hi,

Currently working on an outbound REST to 3rd party tool (through a mid server). 3rd party requires mutipart to be sent when sending a file to attach/upload.

Test the POST call on postman and all ok. When in servericenow I'm getting no-where quick 🙂

That said I can get some kind of response just not the one I want (i.e. file uploaded). See REST content:

-----WebKitFormBoundaryAAA

Content-Disposition: form-data; name="file"; filename=${filename};

Content-Type:${contenttype}

${file}

-----WebKitFormBoundaryAAA

 

${contenttype} comes from the content type of the attachment on the sys_attachment table and ${file} is created using the below (which is in a script include):

-----------------------------------------------------------------------------------

var grAtt = new GlideRecord('sys_attachment');
grAtt.addQuery('table_sys_id', sys_id of attachment);
grAtt.query();

if(grAtt.next()){
var gsa = GlideSysAttachmentInputStream(grAtt.sys_id.toString());
var bytesContent = new Packages.java.io.ByteArrayOutputStream();

gsa.writeTo(bytesContent);
bytesContent.close();

//Get the file content
var mycontentStr = new Packages.java.lang.String(bytesContent.toByteArray());

i then set mycontentStr as a parameter to pass to the rest call.

 

Any help would be appreciated!...ive scoured the community and read a few things that multipart not supported and to use MId server script include however there seems to be conflicting views on this.

31 REPLIES 31

thej tj
Kilo Contributor

@Swetang  I did refer this but struggling with constructing attributes in the body. Can you please help with one. Here is my curl command looks like from postman.

--form 'submissionId=111111' \
--form 'owningUserName=sam' \
--form 'numberOfPages=' \
--form 'format=Material for Review' \
--form 'file=@/C:/Users/Test.txt' \
--form 'name=Test' \
--form 'mimeType=multipart/form-data'
 
Thank you in advance!
Thej

 

 

I struggled with this for a few days but from this comment I finally understood what that article was referring to. I am working on a Box integration and the extra parameters need to be added as shown in the article above in the setResponse function of the MultipartREST script include. I will probably copy this function for Box as the extra parameters are specific to Box. Thanks for explaining this here!