---
sourceDocument: Yokohama API Reference
sourceDocumentLink: https://www.servicenow.com/docs/r/yokohama/api-reference

 Release :

    - yokohama

ft:locale :

    - en-US

ft:publication_title :

    - Yokohama API Reference

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# GlideSysAttachment - Global

# GlideSysAttachment - Global {#ariaid-title1}

* Release version: Yokohama
* 
* Updated February 18, 2025
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 3 minutes to read

The GlideSysAttachment API provides methods for handling attachments.

Content is returned as a GlideScriptableInputStream object when getContentStream() is called. The GlideScriptableInputStream contains the actual bytes not converted into a string.

## GlideSysAttachment - GlideSysAttachment() {#ariaid-title2}

Creates an instance of the GlideSysAttachment class.
{#GSA-GlideSysAttachment__table_iys_ctb_fv__entry__3}

| Name | Type | Description |
|-|-|-|
| None |   |   |
[Table 1. Parameters]

{#GSA-GlideSysAttachment__table_iys_ctb_fv}

## GlideSysAttachment - copy(String sourceTable, String sourceID, String targetTable, String targetID) {#ariaid-title3}

Copies attachments from the source record to the target record.
{#GSA-copy_S_S_S_S__id_g4d_yjz_g5b__entry__3}

| Name | Type | Description |
|-|-|-|
| sourceTable | String | Name of the table with the attachments to be copied. |
| sourceID | String | Source table's sys_id. |
| targetTable | String | Name of the table on which to add the attachments. |
| targetID | String | Target table's sys_id. |
[Table 2. Parameters]

{#GSA-copy_S_S_S_S__id_g4d_yjz_g5b} {#GSA-copy_S_S_S_S__id_afm_yjz_g5b__entry__2}

| Type | Description |
|-|-|
| String | Array of sys_ids of the attachments that were copied. |
[Table 3. Returns]

{#GSA-copy_S_S_S_S__id_afm_yjz_g5b}  

    var attachment = new GlideSysAttachment();
    var incidentSysID = 'ab1b30031b04ec101363ff37dc4bcbfc';
    var incGR = new GlideRecord('incident');
    incGR.get(incidentSysID);

    var copiedAttachments = attachment.copy('incident', incidentSysID, 'problem', incGR.getValue('problem_id'));
    gs.info('Copied attachments: ' + copiedAttachments);

Output:

    Copied attachments: 6e4621df1bc420501363ff37dc4bcbb0,a87769531b0820501363ff37dc4bcba2

## GlideSysAttachment - deleteAttachment(String attachmentID) {#ariaid-title4}

Deletes the specified attachment.
{#GSA-deleteAttachment_S__id_ywb_ykz_g5b__entry__3}

| Name | Type | Description |
|-|-|-|
| attachmentID | String | Attachment's sys_id. |
[Table 4. Parameters]

{#GSA-deleteAttachment_S__id_ywb_ykz_g5b} {#GSA-deleteAttachment_S__table_gjy_lyb_fv__entry__2}

| Type | Description |
|-|-|
| void |   |
[Table 5. Returns]

{#GSA-deleteAttachment_S__table_gjy_lyb_fv}  

    var attachment = new GlideSysAttachment();
    var attachmentSysID = 'a87769531b0820501363ff37dc4bcba2';
    attachment.deleteAttachment(attachmentSysID);

## GlideSysAttachment - getAttachments(String tableName, String sys_id) {#ariaid-title5}

Returns a GlideRecord containing the matching attachment metadata such as name, type,
or size.
{#GSA-getAttachments_S_S__id_m5v_14z_g5b__entry__3}

| Name | Type | Description |
|-|-|-|
| tableName | String | Name of the table to which the attachment belongs; for example, incident. |
| sys_id | String | Sys_id of record to which the attachment belongs. |
[Table 6. Parameters]

{#GSA-getAttachments_S_S__id_m5v_14z_g5b} {#GSA-getAttachments_S_S__id_qr3_c4z_g5b__entry__2}

| Type | Description |
|-|-|
| GlideRecord | GlideRecord object containing the matching attachment metadata such as name, type, or size. |
[Table 7. Returns]

{#GSA-getAttachments_S_S__id_qr3_c4z_g5b}  
The following script lists attachment file names for a record with two attachments.

    var attachment = new GlideSysAttachment();

    var agr = attachment.getAttachments('<table_name>', '<record_sys_id>');

    while(agr.next())
    gs.info(agr.getValue('file_name'));

Output:

    *** Script: filename1.txt
    *** Script: filename2.txt

## GlideSysAttachment - getContentStream(String sysID) {#ariaid-title6}

Returns a GlideScriptableInputStream object given the sys_id of an
attachment.
You can use the [GlideTextReader](https://www.servicenow.com/docs/QcOEEWm5vauY8F6sePOgmw#c_GlideTextReaderScopedAPI "The GlideTextReader API provides the ability to read single lines from an input stream. Because an input stream is used, it is not subject to the 5MB attachment size limit.") API to read the content stream.
{#GSA-getContentStream_S__id_sdc_44z_g5b__entry__3}

| Name | Type | Description |
|-|-|-|
| sysID | String | Attachment sys_id. |
[Table 8. Parameters]

{#GSA-getContentStream_S__id_sdc_44z_g5b} {#GSA-getContentStream_S__id_nqx_44z_g5b__entry__2}

| Type | Description |
|-|-|
| GlideScriptableInputStream | Stream that contains the attachment content. |
[Table 9. Returns]

{#GSA-getContentStream_S__id_nqx_44z_g5b}  

    var attachment = new GlideSysAttachment();
    var attachmentSysID = '6e4621df1bc420501363ff37dc4bcbb0';
    var attachmentContentStream = attachment.getContentStream(attachmentSysID);
    gs.info('Attachment content stream: ' + attachmentContentStream);

Output:

    Attachment content stream: com.glide.communications.GlideScriptableInputStream@14bd299

## GlideSysAttachment - write(GlideRecord record, String fileName, String contentType, String content) {#ariaid-title7}

Attaches a specified attachment to the specified record.
{#GSA-write_GR_S_S_S__id_odn_1pz_g5b__entry__3}

| Name | Type | Description |
|-|-|-|
| record | GlideRecord | Record to which to attach the attachment. |
| fileName | String | Attachment file name. |
| contentType | String | MIME type of the attachment, such as `image/png`. Located in the Attachment \[sys_attachment\] table in the Content type field. |
| content | String | Attachment content. |
[Table 10. Parameters]

{#GSA-write_GR_S_S_S__id_odn_1pz_g5b} {#GSA-write_GR_S_S_S__id_kbx_1pz_g5b__entry__2}

| Type | Description |
|-|-|
| String | Attachment sys_id. Returns null if the attachment was not added. |
[Table 11. Returns]

{#GSA-write_GR_S_S_S__id_kbx_1pz_g5b}  

    var attachment = new GlideSysAttachment();

    //set up inputs
    var rec = new GlideRecord('incident');
    rec.get('78271e1347c12200e0ef563dbb9a7109');
    var fileName = 'example.txt';
    var contentType = 'text/csv';
    var content = 'The text that is stored inside my file';

    var agr = attachment.write(rec, fileName, contentType, content);

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

Output:

    The attachment sys_id is: 01271e4317c13311e0ef563dbb9abe34

## GlideSysAttachment - writeContentStream(GlideRecord now_GR, String fileName, String contentType, GlideScriptableInputStream inputStream) {#ariaid-title8}

Inserts an attachment using the input stream.
{#GSA-writeContentStrm_GR_S_S_GSIS__id_trk_jpz_g5b__entry__3}

| Name | Type | Description |
|-|-|-|
| now_GR | GlideRecord | Record to which to attach the attachment. |
| fileName | String | Attachment file name. |
| contentType | String | MIME type of the attachment, such as `image/png`. Located in the Attachment \[sys_attachment\] table in the Content type field. |
| content | GlideScriptableInputStream | Attachment content. |
[Table 12. Parameters]

{#GSA-writeContentStrm_GR_S_S_GSIS__id_trk_jpz_g5b} {#GSA-writeContentStrm_GR_S_S_GSIS__id_ncv_jpz_g5b__entry__2}

| Type | Description |
|-|-|
| String | Sys_id of the attachment created. |
[Table 13. Returns]

{#GSA-writeContentStrm_GR_S_S_GSIS__id_ncv_jpz_g5b}  
Attaches a content stream from the sys_attachment table to a test_table record.

    function copyAttachmentToGlideRecord(conceptSysId) {

      // Get record from test_table using sys_id
      var targetGlideRecord = new GlideRecord("test_table");
      if (!targetGlideRecord.get(conceptSysId)) {
         throw ("Cannot find record created by test with sys_id: " + conceptSysId);
      }

      // Get record from sys_attachment table
      var sourceAttachmentGlideRecord = new GlideRecord('sys_attachment');    
      sourceAttachmentGlideRecord.query();
      sourceAttachmentGlideRecord.next();

      // Get field values from retrieved sys_attachment record
      var fileName = sourceAttachmentGlideRecord.getValue('file_name');
      var contentType = sourceAttachmentGlideRecord.getValue('content_type');
      var sourceAttachmentSysId = sourceAttachmentGlideRecord.getValue('sys_id');

      // Attach sys_attachment record content stream to test_table record
      var gsa = new GlideSysAttachment();
      gsa.writeContentStream(
        targetGlideRecord,
        fileName,
        contentType,
        gsa.getContentStream(sourceAttachmentSysId));
      gs.info("Attachment created");
    }


