bureaucracy v1.0.7
bureaucracy
Pull files from hidden file inputs into text inputs with ease
If you want the hidden file inputs part, just absolutely position the file input behind a button skin. Many articles on the internet explain how to do this.
install
npm i bureaucracy -Screate(options?)
Creates a bureaucrat object that can submit files to an HTTP API endpoint. It takes a few options.
| Option | Description |
|---|---|
validate | Function that receives a File object and should indicate whether that file is valid |
method | HTTP method to use when posting the files. Defaults to PUT |
endpoint | HTTP endpoint to post the files to. Defaults to /api/files |
fieldKey | String setting file upload field key. Defaults to uploads |
formData | Object containing additional form parameters. Defaults to an empty object: {} |
There are "common" validate functions for your convenience. These can be referenced by name on the validate option
| Validator | Description |
|---|---|
'image' | Files are expected to have a MIME type of image/gif, image/png, image/jpg, or image/jpeg |
bureaucrat.submit(files)
The files parameter expects an array of File or a FileList, like the ones you can pull from input.files, where input is an input element of type file.
The files are uploaded using a default uploads field key, but this can be customized using the fieldKey options parameter. Once your API has handled the uploaded files, a JSON response should be returned. The only requirement here is a results property that's an array describing the success of each file upload.
{
"results": [
"anything",
{ "can": "be_used"},
["as", "a", "result"]
]
}This data can be useful for the front-end to react to successful file uploads on the success event.
var bureaucrat = create();
bureaucrat.on('success', uploadSuccess);
bureaucrat.submit(uploadInput.files);
function uploadSuccess (results) {
console.log('so many files were uploaded!');
}The submission process emits a variety of events on the bureaucrat object, using the contra emitter API.
| Event | Arguments | Description |
|---|---|---|
started | rawFiles | A submission attempt has started for rawFiles |
invalid | allFiles | Submitted files were invalid, a request won't be made |
valid | validFiles | At least one submitted file was valid, a request will be made |
error | err | An error err occurred during the HTTP API request |
success | results, body | The file API call succeeded and yielded some results |
ended | err, results, body | The HTTP API request process ended, emitted after both error and success |
setup(fileinput, options?)
Reacts to change events on a file input by making a PUT /api/files request with the valid user-selected files as soon as the user is finished choosing their files.
license
mit