The CreatorCon Call for Content is officially open! Get started here.

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  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

6 REPLIES 6

Ankur Bawiskar
Tera Patron
Tera Patron

@supriya pratapa 

you are writing the above script in scoped app or global scope?

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

Ankur Bawiskar
Tera Patron
Tera Patron

@supriya pratapa 

if you are writing the above script in global scope then use this logic

This will work and when you download file will show correct data if the base64 encoded string is valid

var base64Payload = 'JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlIC9DYXRhbG9nCi9QYWdlcyAyIDAgUgovTGFuZyAoZW4tVVMpCj4+CmVuZG9iagoyIDAgb2JqCjw8L1R5cGUgL1BhZ2VzCi9LaWRzIFsgMyAwIFIgXQo+PgplbmRvYmoKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMiAwIFIKL1Jlc291cmNlcyA8PC9Gb250IDw8L0YxIDQgMCBSPj4+PgovQ29udGVudHMgNSAwIFIKL01lZGlhQm94IFswIDAgMjAwIDIwMF0KL0Nyb3BCb3ggWzAgMCAyMDAgMjAwXQo+PgplbmRvYmoKNCAwIG9iago8PC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UcnVlVHlwZQovTmFtZSAvRjEKL0Jhc2VGb250IC9IZWx2ZXRpY2EKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4KZW5kb2JqCjUgMCBvYmoKPDwvTGVuZ3RoIDYwPj4Kc3RyZWFtCkJUCjcwIDUwIFRECi9GMSAxMiBUZgowIDAgVEQKKEhlbGxvLCBXb3JsZCEpIFRqCkVUCmVuZHN0cmVhbQplbmRvYmoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDEwIDAwMDAwIG4gCjAwMDAwMDAwNzkgMDAwMDAgbiAKMDAwMDAwMDE1MCAwMDAwMCBuIAowMDAwMDAwMjUwIDAwMDAwIG4gCjAwMDAwMDAzNDYgMDAwMDAgbiAKdHJhaWxlcgo8PC9Sb290IDEgMCBSCj4+CnN0YXJ0eHJlZgozNTYKJSVFT0Y=';

var gr = new GlideRecord('incident');
var recordSysId = '57af7aec73d423002728660c4cf6a71c';
if (!gr.get(recordSysId)) {
    gs.error('Record not found: incident sys_id=' + recordSysId);
    return;
} else {
    var fileName = 'test10.pdf';
    var contentType = 'application/pdf';
    var ecc = new GlideRecord('ecc_queue');
    ecc.initialize();
    ecc.agent = "AttachmentCreator";
    ecc.topic = "AttachmentCreator";
    ecc.name = fileName + ":" + contentType;
    ecc.source = "incident:" + gr.sys_id;
    ecc.payload = base64Payload;
    ecc.insert();
}

💡 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  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi @Ankur Bawiskar , Facing the same error.

supriyapratapa_0-1760446434274.png