This is a lightweight library for NodeJS and jQuery, aiming to make uploading files a doddle. With some useful options including basic validation, it is a good choice for any developer who is not so worried about supporting legacy browsers.
- dependency free
- file type and size validation
- support for custom validators
- hooks for all major events like progress, success, fail etc
- drag/drop support
- ability dynamically update the form data packet before each upload
- upload multiple files as individual requests
npm install lite-uploader --save
<script src="./src/liteuploader.js"></script>
jQuery is supported but is optional
Name | Type | Default | Description |
---|---|---|---|
url | String or Function (required) | null | url that will handle the upload, or a function that resolves with the url |
ref | String (required) | null | the request argument name for the file form data. Will fallback to the name property of the file input field if not supplied. |
method | String | POST | allows overriding of the default HTTP request method if necessary |
rules | Object | {} | object where you can specify validation rules for the files to be uploaded - current supported rules are:
|
params | Object | {} | object of params to be sent to the server in addition to the files being uploaded |
headers | Object | {} | object of headers to be sent to the server |
validators | Array | [] | an array of functions that can take a File and return a validation result on it, see examples for usage |
singleFileUploads | Boolean | false | set to true to upload each file of a selection using an individual request |
withCredentials | Boolean | false | indicates whether requests should be made using credentials such as cookies |
beforeRequest | Function | null | delay the file upload request by returning a promise. Recieves the Files and the FormData. Expected to resolve with the FormData to continue. Reject to stop upload. |
sendAsFormData | Boolean | true | when set to false and singleFileUploads is true, dont send the file payload as form data. Also any params added via 'addParam' to form data, will be ignored |
Name | Parameters | Description |
---|---|---|
lu:errors | eventName, {errors} | triggered when errors are found, including built-in and custom validators - see 'Error Types' section for more |
lu:start | eventName, {files} | triggered before any uploading starts |
lu:finish | eventName | triggered when all uploading has finished |
lu:before | eventName, {files} | triggered before each request to the server |
lu:progress | eventName, {files, percentage} | triggered whilst uploading files |
lu:success | eventName, {files, response} | triggered on a successful request to the server |
lu:fail | eventName, {xhr} | triggered on a failed request to the server |
lu:cancelled | eventName | triggered on upload abort |
Below is an overview of the built-in error types that can be returned when validating files
- type - when file mime type does not match any mime types supplied in the rule.allowedFileTypes option
- size - when file size is above the size (in bytes) supplied in the rule.maxSize option
- refRequired - when there is no name attribute on the file input and no 'ref' options is passed to the plugin
- urlRequired - when no 'url' option is passed to the plugin
Starts the upload
Name | Type | Default | Description |
---|---|---|---|
files | FileList (optional) | null | a list of files to be uploaded, takes priority over default mechanism if supplied |
Allows parameters to be added after plugin instantiation
Name | Type | Default | Description |
---|---|---|---|
key | String (required) | n/a | name of parameter to be added |
value | String (required) | n/a | value of parameter to be added |
Allows the upload to be cancelled, triggers lu:cancelled
Name | Type | Default | Description |
---|---|---|---|
No parameters |
- Chrome 45+
- Firefox 34+
- Edge 12+
- Internet Explorer NO (because Promises and Object.assign are used)
- Safari 9+
- Opera 32+
Licensed under the MIT License.
View the full license here.