--- title: cabrillo.attachments - Client description: The name space for Cabrillo JS attachment functions. This enables adding and viewing attachments.Presents a document picker and uploads the selected file.Presents a document picker to select and upload files.Presents a document picker and uploads the selected file. locale: en-US canonical_url: https://www.servicenow.com/docs/r/australia/api-reference/cllent-mobile-api-reference/cabrillo-attachments-namespace.html release: australia product: Cllent Mobile API Reference classification: cllent-mobile-api-reference topic_type: concept last_updated: "2026-03-12" reading_time_minutes: 3 breadcrumb: [Client mobile API reference, API reference, API implementation and reference] --- # cabrillo.attachments - Client The name space for Cabrillo JS attachment functions. This enables adding and viewing attachments. **Parent Topic:**[Client mobile API reference](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/cllent-mobile-api-reference/api-client-mobile.md) ## cabrillo.attachments - addFile\(String tableName, String sysId, Object params, String options\) Presents a document picker and uploads the selected file. **Important:** This method is deprecated. Use the [addFiles\(\)](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/cllent-mobile-api-reference/cabrillo-attachments-namespace.md) method instead. |Name|Type|Description| |----|----|-----------| |tableName|String|Table name of the record to which to attach the attachment.| |sysID|String|The sys\_id of the record to which to attach the attachment.| |params|Object|Unused. Set to null.| |options|String|Unused. Set to null.| |Type|Description| |----|-----------| |promise|If successful a Cabrillo.Attachment object. If the operation fails, an error.| ``` var table = 'incident'; var sysID = 'a9e30c7dc61122760116894de7bcc7bd'; cabrillo.attachments.addFile(table, sysID, null, null ).then(function(attachment) { if (attachment) { console.log('Added a new file.', attachment); } else { console.log('User cancelled adding an attachment.'); } }, function(error) { console.log('Failed to attach new file.', error); }); ``` ## cabrillo.attachments - addFiles\(String tableName, String sysId, Object params, Object options\) Presents a document picker to select and upload files.
Name Type Description
tableName String Name of the table that contains the record to attach the file to.
sysID String Sys\_id of the record to attach the file to.
params Object Optional. Reserved for future use. Set to null.
options Object Optional. Additional settings for uploading files.``` { "isSingleSelection": Boolean } ```
options.isSingleSelection Boolean Optional. Flag that indicates whether the document picker for uploading files allows multi-selection. Valid values: - true: Only one file to upload can be selected at a time. - false: Multiple files to upload can be selected at a time. Default: False
Type Description
Promise Contains any successfully created attachments and any errors.If multiple files were selected, a Cabrillo.Attachment is created for each successfully uploaded file while an error message is generated for each unsuccessful upload. Data type: Object ``` { “attachments”: [Array], “errors”: [Array] } ```
Promise.attachments Contains any successfully created attachments.Data type: Array ``` “attachments”: [Cabrillo.Attachment] ```
Promise.errors Contains any errors.Data type: Array ``` “errors”: ["String"] ```
This example creates a button for adding multiple attachments to an incident record and checks for any upload errors. ``` this.attachMultipleFilesButton = function() { c.log("Attempting to add multiple attachments to INC0010453"); var table = 'incident'; var sysID = 'fc74aefa1bfb2c10181499f1b24bcb3c'; cabrillo.attachments.addFiles(table, sysID).then(function(result) { if (result) { handleMultipleResult(result) } else { c.log('User cancelled adding an attachment.'); } }, function(error) { c.log('Failed to attach new files.', error); }); } // A helper function to handle addFiles results function handleMultipleResult(result) { c.log('Added multiple attachments.', result); if (result.attachments) { c.log('Number of new attachments', result.attachments.length); } if (result.errors) { c.log('Number of errors during upload', result.errors.length); } } ``` ## cabrillo.attachments -viewFile\(Cabrillo.Attachment attachment, Cabrillo.Rect sourceRect, String sourceBase64Image\) Presents a document picker and uploads the selected file. **Note:** Scaling using a sourceRect parameter with a sourceBase64 image is only supported on iOS. Android ignores these parameters and opens the image without a scaling animation. |Name|Type|Description| |----|----|-----------| |attachment|Cabrillo.Attachment|Describes the attachment to view.| |sourceRect|Cabrillo.Rect|Optional. Describes the source rectangle of the image to scale up.| |sourceBase64Image|String|Optional. A base64 representation of the source image to scale up.| |Type|Description| |----|-----------| |promise|If successful, an unresolved object, otherwise an error.| ``` // A Cabrillo.Attachment dictionary to view var attachment = { sys_id: '8e99daa3ff133100ba13ffffffffff2d', content_type: 'image/jpeg', path: '8e99daa3ff133100ba13ffffffffff2d.iix' }; cabrillo.attachments.viewFile(attachment, null, null ).then(function() { // It worked. Nothing to do here. }, function(error) { console.log('Failed to view file.', error); }); ``` To scale an image that was tapped into a native image viewer, the viewFile\(\) method accepts optional arguments for the image's rectangle on the page as well as a base64 encoded thumbnail of the image. The thumbnail is scaled into the full size image with an animation. ``` // Grab image metadata from an image that was tapped var imageMetadata = imageMetadataFromEvent(event); // Optional rect of image on page var imageRect = imageMetadata.rect; // Optional base64 encoded image to scale up into native viewer var base64EncodedImage = imageMetadata.base64; // A Cabrillo.Attachment dictionary to view var attachment = { sys_id: '8e99daa3ff133100ba13ffffffffff2d', content_type: 'image/jpeg', path: '8e99daa3ff133100ba13ffffffffff2d.iix' } cabrillo.attachments.viewFile(attachment, imageRect, base64EncodedImage ).then(function() { // It worked. Nothing to do here. }, function(error) { console.log('Failed to view file.', error); }); ```