Docs
- Getting Started
- SME Uploader
- Companion
- List of Plugins
- Common Plugin Options
- Custom Stores
- Locale Packs
UI Elements
Sources
- Drag & Drop
- File Input
- Webcam
- Provider Plugins
- ⓒ Dropbox
- ⓒ Google Drive
- ⓒ OneDrive
- ⓒ Zoom
- ⓒ Import From URL
Destinations
File Processing
- Image Editor
- Robodog Introduction
- Robodog File Picker
- Robodog Form
- Robodog Upload
- Robodog Dashboard
- Transloadit
Miscellaneous
Contributing
File Input
@sme-uploader/file-input
is the most barebones UI for selecting files — it shows a single button that, when clicked, opens up the browser’s file selector.
const FileInput = require('@sme-uploader/file-input') uploader.use(FileInput, { // Options }) |
The @sme-uploader/xhr-upload
example uses @sme-uploader/file-input
with the pretty
option enabled.
Installation
This plugin is published as the @sme-uploader/file-input
package.
Install from NPM:
npm install @sme-uploader/file-input |
In the CDN package, it is available on the SmeUploader
global object:
const FileInput = SmeUploader.FileInput |
CSS
The @sme-uploader/file-input
plugin includes some simple styles for use with the pretty
option, like shown in the example. You can also choose not to use it and provide your own styles instead.
import '@sme-uploader/core/dist/style.css' import '@sme-uploader/file-input/dist/style.css' |
Import general Core styles from @sme-uploader/core/dist/style.css
first, then add the File Input styles from @sme-uploader/file-input/dist/style.css
. A minified version is also available as style.min.css
at the same path. The way to do import depends on your build system.
Options
The @sme-uploader/file-input
plugin has the following configurable options:
uploader.use(FileInput, { target: null, pretty: true, inputName: 'files[]', locale: { } }) |
Note that certain restrictions set in SME Uploader’s main options, namely
maxNumberOfFiles
andallowedFileTypes
, affect the system file picker dialog. IfmaxNumberOfFiles: 1
, users will only be able to select one file, andallowedFileTypes: ['video/*', '.gif']
means only videos or gifs (files with.gif
extension) will be selectable.
id: 'FileInput'
A unique identifier for this plugin. It defaults to 'FileInput'
. Use this if you need to add multiple FileInput instances.
target: null
DOM element, CSS selector, or plugin to mount the file input into.
pretty: true
When true, display a styled button (see example) that, when clicked, opens the file selector UI. When false, a plain old browser <input type="file">
element is shown.
inputName: 'files[]'
The name
attribute for the <input type="file">
element.
locale: {}
When pretty
is set, specify a custom label for the button.
strings: { chooseFiles: 'Choose files' } |
Custom file input
If you don’t like the look/feel of the button rendered by @sme-uploader/file-input
, feel free to forgo the plugin and use your own custom button on a page, like so:
<input type="file" id="my-file-input"> |
Then add this JS to attach it to SME Uploader:
const uploader = new SmeUploader(...) const fileInput = document.querySelector('#my-file-input') fileInput.addEventListener('change', (event) => { const files = Array.from(event.target.files) files.forEach((file) => { try { uploader.addFile({ source: 'file input', name: file.name, type: file.type, data: file }) } catch (err) { if (err.isRestriction) { // handle restrictions console.log('Restriction error:', err) } else { // handle other errors console.error(err) } } }) }) |