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.
-
fileFileshould be a file as provided by express when a file is uploaded, i.e. req.files.path -
updateBooleanwhether 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)