Built something you're proud of? Tell the story. A quick G2 review of App Engine or Build Agent helps other developers see what's possible on ServiceNow. Share your experience.

Base 64 to attachment conversion

supriya pratapa
Tera Guru

We have a base64 response and want to convert this base64 into attachment and attach it to a record in ServiceNow.

(function() {
    var base64Payload = 'JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlIC9DYXRhbG9nCi9QYWdlcyAyIDAgUgovTGFuZyAoZW4tVVMpCj4+CmVuZG9iagoyIDAgb2JqCjw8L1R5cGUgL1BhZ2VzCi9LaWRzIFsgMyAwIFIgXQo+PgplbmRvYmoKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMiAwIFIKL1Jlc291cmNlcyA8PC9Gb250IDw8L0YxIDQgMCBSPj4+PgovQ29udGVudHMgNSAwIFIKL01lZGlhQm94IFswIDAgMjAwIDIwMF0KL0Nyb3BCb3ggWzAgMCAyMDAgMjAwXQo+PgplbmRvYmoKNCAwIG9iago8PC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UcnVlVHlwZQovTmFtZSAvRjEKL0Jhc2VGb250IC9IZWx2ZXRpY2EKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4KZW5kb2JqCjUgMCBvYmoKPDwvTGVuZ3RoIDYwPj4Kc3RyZWFtCkJUCjcwIDUwIFRECi9GMSAxMiBUZgowIDAgVEQKKEhlbGxvLCBXb3JsZCEpIFRqCkVUCmVuZHN0cmVhbQplbmRvYmoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDEwIDAwMDAwIG4gCjAwMDAwMDAwNzkgMDAwMDAgbiAKMDAwMDAwMDE1MCAwMDAwMCBuIAowMDAwMDAwMjUwIDAwMDAwIG4gCjAwMDAwMDAzNDYgMDAwMDAgbiAKdHJhaWxlcgo8PC9Sb290IDEgMCBSCj4+CnN0YXJ0eHJlZgozNTYKJSVFT0Y=';
    var base64Bytes = GlideStringUtil.base64DecodeAsBytes(base64Payload);
    var ByteArrayInputStream = Packages.java.io.ByteArrayInputStream;
    var inputStream = new ByteArrayInputStream(base64Bytes);
    var gr = new GlideRecord('incident');
    var recordSysId = '57af7aec73d423002728660c4cf6a71c';
    if (!gr.get(recordSysId)) {
        gs.error('Record not found: incident sys_id=' + recordSysId);
        return;
    }
    var gsa = new GlideSysAttachment();
    gsa.write(gr.getUniqueValue(),gr.getTableName(),'test10.pdf', 'application/pdf', inputStream);

    gs.info('Attachment created successfully.');
})();
 
The attachment is attached to the record but unable to open the file.

 

1 ACCEPTED SOLUTION

@supriya pratapa 

Hope you are doing good.

Did my reply answer your question?

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

8 REPLIES 8

@supriya pratapa 

I already informed the script I shared should work fine provided you give correct base64 for PDF

The same script worked for me in global scope

-> I took base64 of some pdf file using this website "https://base64.guru/converter/encode/pdf"

-> then background script ran and file attached and when I opened the file, data is seen

see the gif attached

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

@supriya pratapa 

Hope you are doing good.

Did my reply answer your question?

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

GaneshK97211902
Tera Contributor
// try below code in scope application it works
 
 
var attachment = new GlideSysAttachment();

var rec = new GlideRecord('x_dusms_ppc_servic_journal_entry_request');
var incidentSysID = 'x_dusms_ppc_servic_journal_entry_request';
rec.get(incidentSysID);
var fileName = 'example.csv';
var contentType = 'text/csv';
var base64Encodedcontent = base64_payload; //origional base64 payload

var agr = attachment.writeBase64(rec, fileName, contentType, base64Encodedcontent);

gs.info('The attachment sys_id is: ' + agr);

GaneshK97211902
Tera Contributor
// try below code in scope application it works
 
 
var attachment = new GlideSysAttachment();

 

var rec = new GlideRecord('x_dusms_ppc_servic_journal_entry_request');
var incidentSysID = 'x_dusms_ppc_servic_journal_entry_request';
rec.get(incidentSysID);
var fileName = 'example.csv';
var contentType = 'text/csv';
var base64Encodedcontent = base64_payload; //origional base64 payload

 

var agr = attachment.writeBase64(rec, fileName, contentType, base64Encodedcontent);

 

gs.info('The attachment sys_id is: ' + agr);