Need to pass a bytes array as part of a Rest API call

Juan R_ Campos
Giga Contributor

Hi Community,

I need to convert an attachment in a Bytes array to pass it as parameter of a REST API,   I using the following code, but it looks is not working if you can give me some help. Please be aware I cannot encode using base64 due the endpoint only accept binary for REST.

var gr = new GlideRecord('sys_attachment');

gr.addQuery('table_sys_id', current.sys_id);

gr.addQuery('table_name', current.getTableName());

gr.query();

var StringUtil = new GlideStringUtil();

var sa = new GlideSysAttachment();

var binData = sa.getBytes(gr);

var stringData =   String(binData);

gs.log("String Data "+stringData);

Result

String Data: [B@d6897a

Thanks for the help you can provide.

Regards,

1 ACCEPTED SOLUTION

Geoffrey2
ServiceNow Employee
ServiceNow Employee

I have used this before:



var gsa = new GlideSysAttachment();


var bytes = gsa.getBytes('sys_attachment', 'sys_id_of_attachment'); // can also use a GlideRecord


var str = Packages.java.lang.String(bytes); // Java/Rhino conversion


str = String(str); // JavaScript conversion


gs.log('Bytes as string: ' + str);


View solution in original post

2 REPLIES 2

Geoffrey2
ServiceNow Employee
ServiceNow Employee

I have used this before:



var gsa = new GlideSysAttachment();


var bytes = gsa.getBytes('sys_attachment', 'sys_id_of_attachment'); // can also use a GlideRecord


var str = Packages.java.lang.String(bytes); // Java/Rhino conversion


str = String(str); // JavaScript conversion


gs.log('Bytes as string: ' + str);


Hi Geoffrey--I'm getting an error with that script. Have you run into this before?

 

Javascript compiler exception: The choice of Java constructor java.lang.String matching JavaScript argument types (null) is ambiguous; candidate constructors are: 
    String(java.lang.StringBuilder)
    String(java.lang.StringBuffer)
    String(byte[])
    String(char[])
    String(java.lang.String) (null.null.script; line 3) in:
var gsa = new GlideSysAttachment();
var bytes = gsa.getBytes('sys_attachment', 'f6cf2f914f3b63004ce80ad14210c763'); // can also use a GlideRecord
var str = Packages.java.lang.String(bytes); // Java/Rhino conversion
str = String(str); // JavaScript conversion
gs.log('Bytes as string: ' + str);