Edit this page

S3 File Field

Warning: the S3 File Field has been deprecated. Please use the File and a storage adapter going forward.

Object — Displayed as an file upload field in the Admin UI.

Automatically manages files stored in Amazon S3, including uploading and deleting.

  { type: Types.S3File }

Options

s3path String

the path to store uploaded files under in the S3 bucket

datePrefix String

if set, prefixes the file name with the current date in this format (see moment.js for format options)

allowedTypes Array of String

optional white-list of allowed mime types for uploaded files

filename Function

function with arguments current model and client file name to return the new filename to upload.

{
    type: Types.S3File,
    filename: function(item, filename){
        // prefix file name with object id
        return item._id + '-' + filename;
    }
}

headers Object or Array or Function

Headers can be provided as an Object, in which the keys are used as header names and the values are used as header values.

  {
    type: Types.S3File,
    headers: {
      'x-amz-meta-Cache-Control' : 'max-age=' + (60 * 15),
      'x-amz-meta-X-Custom-Header' : 'Object Option'
    }
  }

When the option is provided as an Array of headers, each header element in the array should be an Object with name and value String properties.

  {
    type: Types.S3File,
    headers: [
        { name: 'x-amz-meta-Cache-Control', value: 'max-age=' + (60 * 15) },
        { name: 'x-amz-meta-X-Custom-Header', value: 'Array Option' }
    ]
  }

When the option is provided as a Function, the function will be called with arguments for the current model and client file; The function should return either an Array of valid header objects or a simple Object.

  {
    type: Types.S3File,
    headers: function (item, file) {
      var headers = [];
      headers.push({ name: 'x-amz-meta-Cache-Control', value: 'max-age=' + item.maxAge });
      headers.push({ name: 'x-amz-meta-X-Custom-Header', value: 'Computed Option (Array)' });
      return headers;
    }
  }
  // or
  {
    type: Types.S3File,
    headers: function (item, file){
      var headers = {};
      headers['x-amz-meta-Cache-Control'] = 'max-age=' + item.maxAge;
      headers['x-amz-meta-X-Custom-Header'] = 'Computed Option (Object)';
      return headers;
    }
  }

format Function

function with two arguments: current model and file object to return representation of this file in Admin UI.

{
  type: Types.S3File,
  format: function(item, file){
    return '<pre>'+JSON.stringify(file, false, 2)+'</pre>'+
          '<img src="'+file.url+'" style="max-width: 300px">'
  }
}

Schema

filename String

type String

filesize Number

url String

Virtuals

exists Boolean

whether there is a stored file

Special paths

{path}_upload

when a file is provided to the updateHandler, it will be uploaded to s3 and the details will be stored in the field.

Underscore methods

uploadFile(file, update, callback) uploads a file to the s3 bucket, stores the details in the field and provides the file data to the callback.

  • file File should be a file as provided by express when a file is uploaded, i.e. req.files.path

  • update Boolean whether to update the field with the details of the file after upload completes

  • callback(err, fileData) - is passed the object that will be stored in the field (see schema above)