Skip to content
Release: Australia · Updated: 2026-03-12 · Official documentation · View source

cabrillo.attachments - Client

The name space for Cabrillo JS attachment functions. This enables adding and viewing attachments.

Parent Topic:Client mobile API reference

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() method instead.

NameTypeDescription
tableNameStringTable name of the record to which to attach the attachment.
sysIDStringThe sys_id of the record to which to attach the attachment.
paramsObjectUnused. Set to null.
optionsStringUnused. Set to null.
TypeDescription
promiseIf 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.

NameTypeDescription
tableNameStringName of the table that contains the record to attach the file to.
sysIDStringSys\_id of the record to attach the file to.
paramsObjectOptional. Reserved for future use. Set to null.
optionsObjectOptional. Additional settings for uploading files.
{
  "isSingleSelection": Boolean
}
options.isSingleSelectionBooleanOptional. 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
TypeDescription
PromiseContains 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.attachmentsContains any successfully created attachments.Data type: Array
“attachments”: [Cabrillo.Attachment]
Promise.errorsContains 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.

NameTypeDescription
attachmentCabrillo.AttachmentDescribes the attachment to view.
sourceRectCabrillo.RectOptional. Describes the source rectangle of the image to scale up.
sourceBase64ImageStringOptional. A base64 representation of the source image to scale up.
TypeDescription
promiseIf 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);
});