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.

GlideSysAttachment().getBytes() is not working if size of attachment is more than 5 MB?

lvakare
Kilo Contributor

Hi All,

I am using Helsinki and I am facing same Issue When file size is greater than 5 MB showing as 0 bytes.Debugging this, at the line var binData = sa.getBytes(att), binData.length = 0.In ServiceNow community we see similar post(https://community.servicenow.com/thread/195363) which says getBytes() method has a limit of 5MB I tried solution given in the post(https://community.servicenow.com/thread/195363) but it doesn't work.Can any one help in resolving this.

Below is part of script I use:

function sendAttachment(att,counter) {

  gs.log('Export Attachments Script - Send Attachment #'+counter+' - START');

  var bool = false;

  try {

  //Create GlideSysAttachment object

  var sa = new GlideSysAttachment();

//Gets the binary data of the passed attachment

var binData = sa.getBytes(att);

//Encodes the binary to base64

  var encData = GlideStringUtil.base64Encode(binData);

//Prepares a file name a "TABLE_NAME - (commented)TICKET_SYS_ID - SYS_ID - FILE_NAME"

  var file_name = att.table_name + "-" + att.table_sys_id + "-" + att.sys_id + "-" +   sanitizeFileName(att.file_name.toString()).trim();

  //Calls send Request for binary data and generated file name

  sendRequest(encData, file_name);

  //If no exception always return true

  bool = true;

  } catch (Exception) {

  gs.log('Failed sending Attachment to due to Exception: '

  + Exception);

  }

  return bool;

}

5 REPLIES 5

ersureshbe
Giga Sage
Giga Sage

Hi Kozhema,

I'm having an issue with base64 conversion from sys_attachment table. I have used below code. It contins limitation as 5 MB and It's not working more than 5 MB file. 

var gr = new GlideRecord('sys_attachment');
gr.addQuery('sys_id', current.sys_id);
gr.query();
if (gr.next())
{
var encData = new GlideSysAttachment().getContentBase64(gr);
return encData;
}
 
I hav tried to overcome this issue using getContentStream. But it's not working as expected.
 
var gr = new GlideRecord('sys_attachment');
gr.addQuery('sys_id', current.sys_id);
gr.query();
if (gr.next()){
 var inputStream = new GlideSysAttachment().getContentStream(gr.sys_id);
var digest = new GlideDigest();
var encData = digest.getSHA1Base64FromInputStream(inputStream);
return encData;
}
 
Can you please help to identify the issue from above code or share altrenate solution to fix base64 conversion issue.
 
Regards,
Suresh Loganathan.
Regards,
Suresh.