Multiple file upload
Bootstrap file input
plugin enhances the HTML 5 file input for
Bootstrap 3.x into an advanced widget with file preview for various files, multiple
selection and more. The plugin enhances these concepts and simplifies the widget
initialization with simple HTML markup on a file input. It offers support for previewing
a wide variety of files i.e. images, text, html, video, audio, flash, and objects.
Example
Single file uploader
Single file upload can be also considered the default state, because JS
configuration is the same in both single and multiple modes. The only difference is
multiple
attribute in file input type. You can disable certain features
like previews and make it a regular customized 1 line file input. Keep in mind that
input field itself has readonly
attribute by default.
Example
Hidden preview
When files are selected, file input library displays a list of thumbnails
with actions by default. This preview area with all thumbnails and actions can be hidden
by setting data-show-preview
attribute or showPreview
JS
configuration option to false
. Note - this option also disables initial
drag and drop area and makes it less interactive, so that user can use only 1 option to
choose files by clicking Browse
button
Example
Using data-attributes
Use file input attributes (e.g. multiple upload) for setting input behavior and data attributes to control plugin options. For example, hide/show display of upload button and caption. Note that for multiple inputs, your server code must receive an array of file objects (e.g. for PHP server code, you must use the array naming convention for your input)
Example
Disabled input
Set the file input widget to be readonly
or
disabled
by adding corresponding attribute to the file input. The following
example demonstrates the disabled input field, which also disables input styling in
focus state and removes pointer events from file input field and "Browse" button. See
"Using plugin methods" example for reference
Example
Hidden caption
Initialize file input widget via javascript (data attributes are not supported in this particular example). Hide the caption and display widget with only buttons (and hide the drop zone by setting dropZoneEnabled to false). You can envelop the input within a container with the file-loading class to show a spinning indicator, while the plugin loads.
Example
Input group sizing
Since file input library is built on top of Bootstrap, it re-uses class name
logic accross containers. This allows us to control input group sizing just like we
would do it in the input group component itself. Use input-group-[sm|lg]
class values in data-input-group-class
data attribute to change default
sizing to small or large.
Large file input
Default file input
Small file input
Overwrite styles
Thanks to deep customization possibilities via both JS and data attributes, file input allows us to adjust default styling without even touching any CSS. In the following example we configured file input to show only image files for selection & preview. We also changed control button labels, styles, and icons for the browse, upload, and remove buttons
Example
Specify file extensions
Using data attributes to configure the entire widget. This example shows how
you can pass json within data attributes in the HTML markup (check
data-allowed-file-extensions which basically sets the plugin property
allowedFileExtensions) Allow only specific file extensions. In this example only
jpg
, gif
, png
and txt
extensions are
allowed
Example
Specify file types
With accept
option that can be specified in the markup, you can
control file types that users are allowed to upload. In this example we limited file
types to image
and video
only by adding
accept="image/*, video/*"
attribute. Additionally you can configure the
condition for validating the file types using `fileTypeSettings`
in your JS
configuration
Example
Always display preview
Display preview on load with preset files/images and captions with
overwriteInitial
set to false
. So the initial preview is
always displayed when additional files are overwritten (useful for multiple upload)
scenario. Check how the initial preview config can allow file thumbnails to include
actions for delete and download (via the delete url (url
) and the download
url (downloadUrl
)
Example
Overwrite preview
Similar configuration to scenario 1, but with overwriteInitial
set to true
that will overwrite files in the initial preview on selection.
This scenario shows how you can set a different file name than the caption for your file
actions. The file name for download is automatically displayed as the caption setting.
Example
Block button
File input configuration options allows us to change default styles of any
button: browse, upload, remove etc. Besides different color options, we can also use our
utility classes to change width of the main "Browse" button. Here we added
w-100
width helper class to data-browse-class
attribute to
give the button 100% width.
Example
Using plugin methods
Demonstration on usage of enable/disable
plugin methods to
manipulate the fileinput plugin. Besides mode toggle, file input also supports
destroy
, create
, refresh
and clear
methods. Click the button to disable file input and click again to enable it. JS config
looks like this - $([selector]).fileinput([method])
.
Example
AJAX upload
Asynchronous / Parallel AJAX based uploads with drag and drop functionality.
Just set the uploadUrl
data property and multiple
to
true
. Note that the file input name attribute for multiple uploads should
be setup as a array format. You can modify files selected before upload i.e. append or
delete
Example