What is dropzone?
Dropzone is a JavaScript library that provides drag-and-drop file uploads with image previews. It is highly customizable and easy to integrate into web applications.
What are dropzone's main functionalities?
Basic File Upload
This code demonstrates how to create a basic Dropzone instance for file uploads. It specifies the URL to which files will be uploaded, the parameter name for the file, the maximum file size, and the accepted file types.
const Dropzone = require('dropzone');
// Create a Dropzone instance
const myDropzone = new Dropzone('#my-dropzone', {
url: '/file/post',
paramName: 'file',
maxFilesize: 2, // MB
acceptedFiles: '.jpeg,.jpg,.png,.gif'
});
Custom Preview Template
This code demonstrates how to create a Dropzone instance with a custom preview template. The template defines the HTML structure for the file preview, including elements for the thumbnail, file name, file size, progress bar, and error/success messages.
const Dropzone = require('dropzone');
// Custom preview template
const previewTemplate = `
<div class="dz-preview dz-file-preview">
<div class="dz-image"><img data-dz-thumbnail /></div>
<div class="dz-details">
<div class="dz-size"><span data-dz-size></span></div>
<div class="dz-filename"><span data-dz-name></span></div>
</div>
<div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>
<div class="dz-error-message"><span data-dz-errormessage></span></div>
<div class="dz-success-mark"><span>✔</span></div>
<div class="dz-error-mark"><span>✘</span></div>
</div>
`;
// Create a Dropzone instance with custom preview template
const myDropzone = new Dropzone('#my-dropzone', {
url: '/file/post',
previewTemplate: previewTemplate
});
Event Handling
This code demonstrates how to handle various events in Dropzone. It shows how to log messages when a file is added, track the upload progress, and handle successful uploads.
const Dropzone = require('dropzone');
// Create a Dropzone instance
const myDropzone = new Dropzone('#my-dropzone', {
url: '/file/post'
});
// Event handling
myDropzone.on('addedfile', function(file) {
console.log('File added:', file.name);
});
myDropzone.on('uploadprogress', function(file, progress) {
console.log('Upload progress:', progress);
});
myDropzone.on('success', function(file, response) {
console.log('File uploaded successfully:', response);
});
Other packages similar to dropzone
react-dropzone
React Dropzone is a simple React component for creating a file dropzone. It provides a flexible and customizable way to handle file uploads in React applications. Compared to Dropzone, it is specifically designed for React and offers a more seamless integration with React's component-based architecture.
fine-uploader
Fine Uploader is a JavaScript library for file uploads that supports multiple file selection, drag-and-drop, and image previews. It offers a wide range of customization options and supports various back-end technologies. Compared to Dropzone, Fine Uploader provides more advanced features and greater flexibility but may require more configuration.
uppy
Uppy is a modular file uploader for web applications. It supports drag-and-drop, file previews, and resumable uploads. Uppy is highly customizable and can be extended with various plugins. Compared to Dropzone, Uppy offers a more modern and modular approach to file uploads, making it suitable for complex use cases.
Dropzone.js is a JavaScript library that turns any HTML element into a dropzone.
This means that a user can drag and drop a file onto it, and the file gets
uploaded to the server via XHR.
The file either gets uploaded directly to the configured URL, or you can handle
and manage the file upload yourself.
If you want support, please use the discussions
section or
stackoverflow with the
dropzone.js
tag and not the GitHub issues tracker. Only post an issue here
if you think you discovered a bug or have a feature request.
Please read the contributing guidelines before you start
working on Dropzone!
Quickstart
The recommended way to install Dropzone is with yarn and
webpack. I'll provide an example project soon!
Download the standalone files and import them on your website.
(The JavaScript files in there are UMD modules, compatible with requirejs).
For more information, please consult the Documentation.
Dropzone does not depend on jQuery but has jQuery integration.
Main features
- Beautiful by default
- Image thumbnail previews. Simply register the callback
thumbnail(file, data)
and display the image wherever you like - Retina enabled
- Multiple files and synchronous uploads
- Progress updates
- Support for large files
- Complete theming. The look and feel of Dropzone is just the default theme. You
can define everything yourself by overwriting the default event listeners.
- Browser image resizing (resize the images before you upload them to your
server)
- Well tested
Documentation
For all the configuration options and installation guide please visit the
documentation site.
If you simply want to look up the configuration options, look at
src/options.js.
Examples
For examples, please see the GitLab wiki.
Server side implementation
Dropzone does not provide the server side implementation of handling the
files, but the way files are uploaded is identical to simple file upload forms
like this:
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
</form>
To handle basic file uploads on the server, please look at the corresponding
documentation. Here are a few documentations, if you think I should add some,
please contact me.
Compatibility
Dropzone supports all current browsers and IE up to IE11.
For all the other browsers, dropzone provides an oldschool file input fallback.
MIT License
See LICENSE file