meteor-uploadable

A package for uploading files and linking them to other models

Usage no npm install needed!

<script type="module">
  import meteorUploadable from 'https://cdn.skypack.dev/meteor-uploadable';
</script>

README

Uploadable

A package enabling the upload and linking of files to models. For example a post in a feed could files attached to it. This package takes care of uploading (using edgee:slingshot), authorising (using coniel:can) and linking the file to a model simply by passing in an instance of the model.

UploadableModel

UploadableModel is used to add uploading capabilities to a model that is built on the coniel:base-model class. To make a model uploadable just call UploadableModel.makeUploadable(Model, "typeAsString", options) passing in a model class, a string that will be used to tag the comment records for later retrieval and optional options.

var Post = BaseModel.extendAndSetupCollection("posts");

UploadableModel.makeUploadable(Post, "post");

This will add the following methods to the prototype of the model.

files(sortKey, sortOrder) - returns an array of files that are linked to this instance of a model.

images(sortKey, sortOrder) - returns an array of files which are images that are linked to this instance of a model.

fileUploads(sortKey, sortOrder) - returns an array of edge:slingshot upload objects that are linked with this instance of a model.

fileCount() - returns the number of files for this instance of a model.

FileUpload

The FileUpload class handles the actual uploading. It uses [edgee:slingshot] to perform the upload so you will need to configure it first (check out the slingshot docs on how to do that).

To upload a file and attach it to a model instance, call FileUpload(model, files, slingshotDirectiveName, callbacks);

model - the model to which you want to link the file(s).

files - an array of files (e.g. taken from a file input on change: event.target.files).

slingshotDirectiveName - the slingshot directive used to enforce rules (such as file type and max size) on the file upload. These are defined when configuring slingshot (check the slingshot docs).

callbacks - an object containing callback methods to call at different stages of the upload (see example below).

var post = Meteor.posts.findOne();

var callbacks = {
    onUploadSuccess: (file) => {
        console.log('upload succeeded');
    },
    onUploadStart: (file) => {
        console.log('upload started');
    },
    onUploadError: (error, file) => {
        console.log('upload failed');
    }
};�

FileUpload.upload(post, files, "image", callbacks);�

File - Extends LinkableModel - Implements UploadableModel

A file is a record of a an uploaded file containing meta data such as its size, mime type, original name...

Instance Methods

user() - Returns an instance of the user that uploaded the file.